Docker 构建、镜像和标签
Apache Superset 社区广泛使用 Docker 进行开发、发布和生产化 Superset。本页面详细介绍了我们的 Docker 构建和标签命名方案,以帮助用户导航我们的产品。
镜像通过 GitHub Actions 构建并推送到 Superset Docker Hub 仓库。不同时间会构建和/或发布不同的镜像集:
- 已发布的版本 (
release
):使用3.0.0
和latest
等标签发布。 - 拉取请求迭代 (
pull_request
):对于每个拉取请求,虽然我们积极构建 Docker 以验证构建,但由于安全原因,我们不会发布这些镜像,只是简单地执行docker build --load
。 - 合并到主分支 (
push
):产生新的 SHA,使用master
前缀的标签表示最新的master
版本。
构建预设
我们有一组构建“预设”,每个预设代表一组构建参数的组合,主要指向不同的构建目标层和/或基础镜像。
以下是通过 build_docker.py
脚本暴露的构建预设:
lean
:默认的 Docker 镜像,包含前端和后端。没有 build_preset 的标签是 lean 构建(例如:latest
、4.0.0
、3.0.0
等)。lean
构建不包含数据库驱动程序,这意味着你需要自行安装。这适用于分析数据库和元数据数据库。你可能需要根据你选择的元数据数据库安装mysqlclient
或psycopg2-binary
,以及连接到分析数据库所需的驱动程序。dev
:用于开发,包含无头浏览器、开发相关工具和 root 访问权限。这包括一些常用的数据库驱动程序,如mysqlclient
、psycopg2-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/arm64
和linux/amd64
。这使得更高层次的结构如helm
和docker compose
能够指向这些镜像,并且同样有效地实现多平台支持。
拉取请求和主分支构建是每个平台一个镜像,以便它们可以并行化,并且这些构建的矩阵更为稀疏,因为我们不需要在每个平台上构建每个构建预设,通常可以在这里更具选择性。对于这些构建,我们会在适用的情况下在标签后缀加上-arm
。
使用苹果硅芯片
苹果当前一代的计算机使用基于ARM的CPU,运行在MAC上的Docker似乎需要linux/arm64/v8
(至少一位用户的M2是那样配置的)。设置环境变量DOCKER_DEFAULT_PLATFORM
为linux/amd64
似乎在利用和基于此处提供的Superset构建进行构建方面起作用。
export DOCKER_DEFAULT_PLATFORM=linux/amd64
据推测,linux/arm64/v8
对于这一代芯片会更加优化,但在ARM生态系统中的兼容性较差。