Skip to main content
Edit this page on GitHub

Docker 构建、镜像和标签

Apache Superset 社区广泛使用 Docker 进行开发、发布和生产化 Superset。本页面详细介绍了我们的 Docker 构建和标签命名方案,以帮助用户导航我们的产品。

镜像通过 GitHub Actions 构建并推送到 Superset Docker Hub 仓库。不同时间会构建和/或发布不同的镜像集:

  • 已发布的版本 (release):使用 3.0.0latest 等标签发布。
  • 拉取请求迭代 (pull_request):对于每个拉取请求,虽然我们积极构建 Docker 以验证构建,但由于安全原因,我们不会发布这些镜像,只是简单地执行 docker build --load
  • 合并到主分支 (push):产生新的 SHA,使用 master 前缀的标签表示最新的 master 版本。

构建预设

我们有一组构建“预设”,每个预设代表一组构建参数的组合,主要指向不同的构建目标层和/或基础镜像。

以下是通过 build_docker.py 脚本暴露的构建预设:

  • lean:默认的 Docker 镜像,包含前端和后端。没有 build_preset 的标签是 lean 构建(例如:latest4.0.03.0.0 等)。lean 构建不包含数据库驱动程序,这意味着你需要自行安装。这适用于分析数据库和元数据数据库。你可能需要根据你选择的元数据数据库安装 mysqlclientpsycopg2-binary,以及连接到分析数据库所需的驱动程序。
  • dev:用于开发,包含无头浏览器、开发相关工具和 root 访问权限。这包括一些常用的数据库驱动程序,如 mysqlclientpsycopg2-binary 以及一些用于开发/CI 的其他工具。
  • py311,例如 Py311:类似于 lean,但使用不同的 Python 版本(在此示例中为 3.11)。
  • ci:用于某些 CI 工作负载。
  • websocket:用于支持高级功能的 Superset 集群。
  • dockerize:由 Helm 使用。

关键标签示例

  • latest:最新的官方发布构建
  • latest-dev:最新官方发布构建的 -dev 镜像,包含无头浏览器和 root 访问权限。
  • master:来自 master 分支的最新构建,隐含 lean 构建预设
  • master-dev:类似于 master,但包含无头浏览器和 root 访问权限。
  • pr-5252:PR 5252 中的最新提交。
  • 30948dc401b40982cb7c0dbf6ebbe443b2748c1b-dev:针对此特定 SHA 的构建,可能来自 master 合并或发布。
  • websocket-latest:用于 Superset 集群的 WebSocket 镜像。

目前所有的自动化构建都是多平台的,支持linux/arm64linux/amd64。这使得更高层次的结构如helmdocker compose能够指向这些镜像,并且同样有效地实现多平台支持。

拉取请求和主分支构建是每个平台一个镜像,以便它们可以并行化,并且这些构建的矩阵更为稀疏,因为我们不需要在每个平台上构建每个构建预设,通常可以在这里更具选择性。对于这些构建,我们会在适用的情况下在标签后缀加上-arm

使用苹果硅芯片

苹果当前一代的计算机使用基于ARM的CPU,运行在MAC上的Docker似乎需要linux/arm64/v8(至少一位用户的M2是那样配置的)。设置环境变量DOCKER_DEFAULT_PLATFORMlinux/amd64似乎在利用和基于此处提供的Superset构建进行构建方面起作用。

export DOCKER_DEFAULT_PLATFORM=linux/amd64

据推测,linux/arm64/v8对于这一代芯片会更加优化,但在ARM生态系统中的兼容性较差。