镜像构建参数参考¶
以下构建参数(docker build 命令中的 --build-arg
)可用于生产镜像。这些参数用于自定义镜像。您可以在从 PyPI 包构建中看到一些示例。
基本参数¶
这些是构建自定义镜像时最常用的参数。
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
基础 Python 镜像。 |
|
|
Airflow 的版本。 |
|
(见表格下方) |
安装 Airflow 时使用的默认 extras。 |
|
安装 Airflow 时可选的额外 extras。 |
|
|
|
Airflow 的 HOME 目录(日志和 SQLite 数据库存储在此处)。 |
|
|
Airflow 用户的 HOME 目录。 |
|
|
使用的 PIP 版本。 |
|
|
使用的 UV 版本。 |
|
|
是否使用 UV 构建镜像。这是一个实验性功能。 |
|
|
UV 拉取请求的超时时间(秒)。 |
|
传递给安装命令的额外 |
|
|
|
PIP 安装的进度条 |
|
|
Airflow 用户 UID。 |
|
|
构建镜像时使用的约束类型。可以是 regular 镜像的 |
|
从 GitHub 获取约束文件的引用(分支或标签)。对于 2.0.* 安装,可以是 |
注意
在 Airflow 2.2 之前,镜像也有 AIRFLOW_GID
参数,但它没有提供任何额外功能,只会增加混淆,因此已被移除。
生产 Dockerfile 中的默认 extras 列表
aiobotocore
amazon
async
celery
cncf-kubernetes
common-io
common-messaging
docker
elasticsearch
fab
ftp
git
google
google-auth
graphviz
grpc
hashicorp
http
ldap
microsoft-azure
mysql
odbc
openlineage
pandas
postgres
redis
sendgrid
sftp
slack
snowflake
ssh
statsd
uv
镜像优化选项¶
构建 Airflow 镜像的定制方法的主要优点在于,它可以构建高度优化的镜像,因为最终镜像(RUNTIME)可能不包含构建和安装所有其他依赖项(DEV)所需的全部依赖项。这些参数允许控制在 DEV 镜像和 RUNTIME 镜像中安装的内容,从而生成更优化的镜像。请参阅构建优化的镜像了解使用这些参数的示例。
构建参数 |
默认值 |
描述 |
---|---|---|
|
如果设置为一个随机的非空值,依赖项将被升级到新版本。在 CI 中,它被设置为构建 ID,以确保后续构建不会重用具有相同值的缓存镜像。 |
|
|
可选的 Python 包,用于为镜像扩展一些额外依赖项。 |
|
|
在构建镜像中安装 dev 依赖项之前执行的 Dev apt 命令。 |
|
|
在构建镜像中安装 dev 依赖项之前执行的额外 Dev apt 命令。应以 |
|
|
空 - 安装默认依赖项(参见 |
在构建镜像中安装的 Dev APT 依赖项。 |
|
在构建镜像中安装的额外 apt dev 依赖项。 |
|
|
安装 dev 依赖项时定义的额外环境变量。 |
|
|
在 |
|
|
在 |
|
|
空 - 安装默认依赖项(参见 |
在 Main 镜像中安装的 Runtime APT 依赖项。 |
|
在 Main 镜像中安装的额外 apt runtime 依赖项。 |
|
|
安装 runtime 依赖项时定义的额外环境变量。 |
|
|
|
是否应该安装 MySQL 客户端。如果未安装客户端,则从 extras 中移除 mysql extra。 |
|
|
MySQL 客户端库的类型。可以是 |
|
|
Whether MsSQL client should be installed |
|
|
Whether Postgres client should be installed |
使用不同方法安装 Airflow¶
这些参数仅当您想使用不同于默认方法(从 PyPI 包安装)来安装 Airflow 时才有用。
这通常只在您有自己的 Airflow 分支并想从这些源代码构建镜像时有用——无论是在本地还是直接从 GitHub 源代码构建。这样,您无需通过 PyPI 发布您的 Airflow 和 Providers,它们可以直接从源代码或 GitHub 仓库安装。另一种安装选项是从之前准备好的二进制 Python 包构建 Airflow,这在需要在高安全性环境中构建 Airflow 时可能有用。
- 您可以在以下内容中看到一些示例:
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
Apache Airflow 的安装方法。 |
|
|
Airflow 的源。当您从本地源安装 Airflow 时,将其设置为 |
|
|
Airflow 源的目标路径。当您从本地源安装 Airflow 时,设置为 |
|
可选 - 可用于限制 Airflow 版本安装,例如 |
|
|
如果不为空,它将使用指定的 URL 或文件覆盖约束文件的源。请注意,文件必须在 Docker 上下文中,因此最好将此类文件放在 |
|
|
|
如果设置为一个文件夹(例如 |
|
|
如果设置为 true,Airflow、provider 和所有依赖项将从放置在 |
依赖缓存¶
我们使用 --mount-type=cache
卷来加快 Airflow 镜像依赖项的安装。结合 uv 的速度和广泛的缓存使用,以及在 CI 环境中快速恢复缓存,这使得我们能够快速构建镜像——无论是用于 CI 还是本地开发目的。可以通过提供 DEPENDENCY_CACHE_EPOCH
构建参数的新值或在 Dockerfile 中修改它来轻松使缓存失效。
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
通过传递新参数允许使缓存失效。 |