由于docker compose主要设计用于在单个主机上运行一组容器,并且无法支持高可用性的要求,因此我们不支持也不建议使用我们的docker compose构造来支持生产类型的用例。对于单主机环境,我们建议在k8s留档上安装时使用minikube。
正如我们的快速入门指南中提到的,在本地尝试Superset的最快方法是在Linux或Mac OSX计算机上使用Docker Compose。Superset没有对Windows的官方支持。这也是快速启动功能齐全的开发环境的最简单方法。
请注意,我们支持运行docker compose的3种主要方式:
1docker-comple. yml:用于交互式开发,我们在其中挂载您的本地文件夹,其中包含前端/后端文件,您可以实时编辑和体验您在应用程序中所做的更改
1docker-compose-non-dev. yml,我们只是基于本地分支构建一个更不可变的镜像,并让所有必需的镜像运行。在您启动此功能时本地分支中的更改将被反映,但在up 时对代码的更改不会反映在应用程序中
1docker-compose-image-tag. yml,我们从docker-hub获取一个镜像,比如3.0.0版本,然后启动它,这样你就可以尝试了。在这里,本地分支中的内容对正在运行的内容没有影响,我们只是从docker-hub获取并运行预构建的镜像。为了让docker compose与它启动的Postgres镜像一起工作,你需要指向一个-dev-后缀的TAG,如export TAG=4.0.0-dev或export TAG=3.0.0-dev,latest-dev是默认值。这是因为dev 构建碰巧打包了连接到作为docker compose构建一部分启动的Postgres数据库所需的psycopg2-binary包。
在设置了这两种方法的要求之后,会详细介绍这两种方法。
要求
请注意,此留档假定您已安装Docker和git。还要注意,我们曾经使用过docker-compose,但这已被弃用,因此我们现在使用docker compose代替。
1克隆Superset的GitHub存储库
使用以下命令在终端中克隆Superset的repo:
Bash
git clone --depth=1 https://github.com/apache/superset.git
该命令成功完成后,您应该会在当前目录中看到一个新的superset 文件夹。
1通过Docker Compose启动 Superset
首先,让我们假设您熟悉docker compose机制。在这里,我们通常会参考docker compose up,即使在某些情况下,您可能希望使用docker compose pull强制检查较新的远程镜像,使用docker compose build强制构建或使用docker compose build --pull在最新的基础镜像上强制构建。但在大多数情况下,简单的up 命令应该可以胜任。有关该主题的更多信息,请参阅docker compose文档。
选项#1-用于交互式开发环境
Bash
# The --build argument insures all the layers are up-to-date
docker compose up --build
提示在开发模式下运行时, superset-node容器需要完成构建资产,以便UI正确呈现。如果您只想尝试Superset而不进行任何代码更改,请按照下面为production 或特定版本记录的步骤进行操作。
提示默认情况下,我们在这里挂载本地 superset-frontend 文件夹并运行npm install以及触发webpack编译/捆绑前端代码的npm run dev。根据您的本地设置,特别是如果您的内存小于16GB,执行这些操作可能会非常慢。在这种情况下,我们建议您将env BUILD_SUPERSET_FRONTEND_IN_DOCKER 设置为false,并在终端中本地运行它。只需触发npm i && npm run dev,这应该会快得多。
提示有时候,你的npm相关的状态可能会失控,从superset-frontend/文件夹运行npm run prune会破坏各种包node_module/文件夹,并帮助你重新开始。在docker compose设置的上下文中,在运行docker compose up之前export NPM_RUN_PRUNE=true将从docker中触发它。
这将减慢启动速度,但将修复各种与npm相关的问题。
选项#2-从本地分支构建一组不可变映像
Bash
docker compose -f docker-compose-non-dev.yml up
选项#3-启动正式版本
Bash
export TAG=3.1.1
docker compose -f docker-compose-image-tag.yml up
在这里,TAG env var可以引用各种发布标签、github SHA和最新的master 。请参阅与docker相关的留档,了解有关您可以从Docker Hub指向的现有标签的更多信息。
docker compose 技巧和配置
谨慎属于Superset实例的所有内容(图表、仪表板、用户等)都存储在其元数据数据库中。在生产环境中,应备份此数据库。使用docker compose的默认安装会将该数据存储在Docker卷中包含的PostgreSQL数据库中,该卷未备份。再次强调,请勿将其用于生产
你应该会看到一个日志输出流,来自你机器上正在启动的容器。一旦这个输出变慢,你应该在本地机器上有一个正在运行的Superset实例!为了避免未来运行时出现文本墙,请在docker compose up命令的末尾添加-d选项。
配置进一步
以下适用于想要配置Superset如何在Docker Compose中运行的用户;否则,您可以跳到下一节。
您可以按照docker/README.md中提到的步骤安装其他python包并应用配置覆盖
请注意,docker/.env为docker compose使用的所有docker映像设置了默认环境变量,并且docker/.env-local可以用于覆盖这些默认值。还要注意,docker/.env-local在我们的.gitignore中被引用,防止开发人员冒着将潜在敏感配置提交到存储库的风险。
一个重要的变量是SUPERSET_LOAD_EXAMPLES它决定了superset_init 容器是否将示例数据和可视化填充到元数据数据库中。这些示例有助于学习和测试Superset,但对于有经验的用户和生产部署来说是不必要的。加载过程有时可能需要几分钟和大量的CPU,因此您可能希望在resource-constrained设备上禁用它。
对于通常在位于PYTHONPATH中的superset_config.py文件中管理的更高级或动态配置,请注意,可以通过提供一个docker/pythonpath_dev/superset_config_docker.py来完成,该文件将被git忽略(防止您将本地配置提交/推送回存储库)。其机制在docker/pythonpath_dev/superset_config.py中,您可以看到逻辑运行from superset_config_docker import *
注意用户通常希望从Superset连接到其他数据库。目前,最简单的方法是修改docker-compose-non-dev.yml文件,并将您的数据库添加为其他服务依赖的服务(通过x-superset-depends-on)。其他人试图在Superset服务上设置network_mode: host,但这些通常会破坏安装,因为配置需要使用Docker Compose DNS解析器来获取服务名称。如果你有一个好的解决方案,请告诉我们!
注意Superset使用Scarf Gateway收集遥测数据。了解不同Superset版本的安装计数有助于项目决定修补和长期支持。Scarf清除个人识别信息(PII)并仅提供聚合统计信息。要选择退出基于docker compose的安装通过Scarf Gateway下载的包的数据采集,请编辑docker-compose.yml中的x-superset-image:行并docker-compose-non-dev.yml文件,将apachesuperset.docker.scarf.sh/apache/superset替换为apache/superset以直接从Docker Hub提取映像。 要禁用Scarf遥测像素,请在终端和/或docker/.env文件中将SCARF_ANALYTICS 环境变量设置为False 。
1登录 Superset
您的本地Superset实例还包括一个Postgres服务器来存储您的数据,并且已经预加载了Superset附带的一些示例数据集。您现在可以通过访问http://localhost:8088通过Web浏览器访问Superset。请注意,现在许多浏览器默认为https如果您的浏览器是其中之一,请确保它使用http。
使用默认用户名和密码登录:
Bash
username: admin
Bash
password: admin
1将Superset连接到本地数据库实例
当使用docker 或docker compose运行Superset时,它在自己的docker容器中运行,就好像Superset完全在另一台机器上运行一样。因此,尝试使用主机名localhost连接到本地数据库是行不通的,因为localhost指的是Superset运行的docker容器,而不是您的实际主机。幸运的是,docker提供了一种从容器内访问主机中网络资源的简单方法,我们将利用此功能连接到本地数据库实例。
这里的说明是从Superset(在其docker容器中运行)连接到postgresql(在您的主机上运行)的。其他数据库可能具有略微不同的配置,但要点是相同的,归结为2个步骤-
1(Mac用户可能会跳过此步骤)配置本地postgresql/数据库实例以接受公共传入连接。默认情况下,postgresql只允许来自localhost和Docker下的传入连接,除非您使用--network=host,localhost将分别引用主机上和Docker容器中的不同端点。允许postgresql接受来自Docker的连接涉及对文件postgresql.conf和pg_hba.conf进行单行更改;您可以在Web上轻松找到针对您的OS/PG版本量身定制的有用链接来完成此任务。对于Docker,仅将IP列入白名单172.0.0.0/8而不是*就足够了,但无论如何,在生产数据库中执行此操作可能会产生灾难性后果,因为您正在向公共互联网开放数据库。
1不要localhost,尝试使用host.docker.internal(Mac用户,Ubuntu)或172.18.0.1(Linux用户)作为主机名,当尝试连接到数据库时。这是Docker内部的细节-正在发生的是,在Mac系统中,Docker Desktop为主机名host.docker.internal创建了一个dns条目,它解析为主机的正确地址,而在Linux情况并非如此(至少默认情况下)。如果这两个主机名都不起作用,那么您可能希望找到您想要使用的确切主机名,为此,您可以执行ifconfig 或ip addr show,并查看docker0 接口的IP地址,该地址必须由Docker为您创建。或者,如果您甚至没有看到docker0 接口,请尝试(如果需要使用sudo)docker network inspect bridge,看看是否有"Gateway"条目,并记下IP地址。
1Build 或不 build
当运行docker compose up时,docker将构建场景背后所需的内容,但如果资产已经存在,则可以使用docker缓存。在docker compose up之前运行docker compose build或等效的快捷方式docker compose up --build可确保您的docker镜像与存储库中的定义匹配。这应仅适用于主docker-compose. yml文件(默认),而不适用于上面定义的替代方法。
下一条:Navicat数据操作的便捷性
品质保证
多年的生产力软件专家
专业实力
资深技术支持项目实施团队
安全无忧
多位认证安全工程师
多元服务
软件提供方案整合,项目咨询实施
购软平台-找企业级软件,上购软平台。平台提供更齐全的软件产品、更专业的技术服务,同时提供行业资讯、软件使用教程和技巧。购软平台打造企业级数字产品综合应用服务平台。用户体验和数字类产品的专业化服务是我们不断追求的目标。购软平台您身边的企业级数字产品优秀服务商。