镜像构建参数参考¶
以下构建参数(docker build 命令中的 --build-arg
)可用于生产镜像。当您想自定义镜像时,可以使用这些参数。您可以在 从 PyPI 包构建 中看到一些示例。
基本参数¶
这些是您在构建自定义镜像时最常用的参数。
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
基础 Python 镜像。 |
|
|
Airflow 的版本。 |
|
(见下表) |
安装 Airflow 时使用的默认 extras。 |
|
安装 Airflow 时使用的可选附加 extras。 |
|
|
|
Airflow 的 HOME 目录(存储日志和 SQLite 数据库的地方)。 |
|
|
Airflow 用户的主目录。 |
|
|
使用的 PIP 版本。 |
|
|
使用的 UV 版本。 |
|
|
是否使用 UV 构建镜像。这是一个实验性功能。 |
|
|
UV 拉取请求的超时时间(秒)。 |
|
传递给安装命令的附加 |
|
|
|
PIP 安装的进度条 |
|
|
Airflow 用户 UID。 |
|
|
用于构建镜像的约束类型。对于常规镜像,可以是 |
|
GitHub 上获取约束文件的引用(分支或标签)。对于 2.0.* 安装,可以是 |
注意
在 Airflow 2.2 之前,镜像中还有 AIRFLOW_GID
参数,但它没有提供任何额外的功能,只会增加混淆,因此已被删除。
生产 Dockerfile 中默认 extras 列表
aiobotocore
amazon
async
celery
cncf-kubernetes
common-io
docker
elasticsearch
fab
ftp
google
google-auth
graphviz
grpc
hashicorp
http
ldap
microsoft-azure
mysql
odbc
openlineage
pandas
postgres
redis
sendgrid
sftp
slack
snowflake
ssh
statsd
uv
virtualenv
镜像优化选项¶
自定义 Airflow 镜像构建方法的主要优点是,它允许构建高度优化的镜像,因为最终镜像(RUNTIME)可能不包含构建和安装所有其他依赖项(DEV)所需的所有依赖项。这些参数允许控制在 DEV 镜像和 RUNTIME 镜像中安装的内容,从而可以生成更优化的镜像。有关使用这些参数的示例,请参阅 构建优化镜像。
构建参数 |
默认值 |
描述 |
---|---|---|
|
如果设置为随机的非空值,则依赖项将升级到较新版本。在 CI 中,它被设置为构建 ID,以确保后续构建不会重复使用具有相同值的缓存镜像。 |
|
|
可选的 Python 包,用于使用一些额外的依赖项扩展镜像。 |
|
|
在构建镜像中安装开发依赖项之前执行的开发 apt 命令。 |
|
|
在构建镜像中安装开发依赖项之前执行的附加开发 apt 命令。应以 |
|
|
空 - 安装默认依赖项(请参阅 |
在构建镜像中安装的开发 APT 依赖项。 |
|
在构建镜像中安装的附加 apt 开发依赖项。 |
|
|
安装开发依赖项时定义的附加环境变量。 |
|
|
在 |
|
|
在 |
|
|
空 - 安装默认依赖项(请参阅 |
在主镜像中安装的运行时 APT 依赖项。 |
|
在主镜像中安装的附加 apt 运行时依赖项。 |
|
|
安装运行时依赖项时定义的附加环境变量。 |
|
|
|
是否应安装 MySQL 客户端。如果未安装客户端,则从 extras 中删除 mysql extra。 |
|
|
MySQL 客户端库的类型。可以是 |
|
|
是否应安装 MsSQL 客户端 |
|
|
是否应安装 Postgres 客户端 |
使用不同方法安装 Airflow¶
仅当您想使用默认方法(从 PyPI 包安装)以外的其他安装方法安装 Airflow 时,这些参数才有用。
这通常仅在您拥有自己的 Airflow 分支并且希望从这些源代码本地构建镜像时才有用 - 无论是本地构建还是直接从 GitHub 源代码构建。这样,您就不需要通过 PyPI 发布您的 Airflow 和 Providers - 它们可以直接从源代码或 GitHub 存储库安装。另一种安装选项是从先前准备好的二进制 Python 包构建 Airflow,这在您需要在需要高级别安全性的环境中构建 Airflow 时可能很有用。
- 您可以在以下位置看到一些示例:
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
Apache Airflow 的安装方法。 |
|
|
Airflow 的源代码。当您从本地源代码安装 Airflow 时,请将其设置为“.”。 |
|
|
Airflow 源代码的目标位置。当您从本地源代码安装 Airflow 时,请将其设置为“/opt/airflow”。 |
|
可选 - 可用于限制 Airflow 版本安装 - 例如,对于自动构建,可以使用 |
|
|
如果非空,它将使用指定的 URL 或文件覆盖约束的来源。请注意,该文件必须位于 Docker 上下文中,因此最好将此类文件放在 |
|
|
|
如果设置为文件夹(例如 |
|
|
如果设置为 true,则 Airflow、providers 和所有依赖项都将从放置在 |
预缓存 PIP 依赖项¶
当从 PIP 构建镜像时,默认情况下会使用 PIP 依赖项的预缓存。这是为了加快开发过程中的增量构建速度。当使用预缓存的 PIP 依赖项并且 pyproject.toml
发生更改时,PIP 依赖项已经预先安装,从而导致镜像重建速度更快。这纯粹是构建镜像所需时间的优化,如果您想从 Docker 上下文文件安装 Airflow,则应禁用此功能。
构建参数 |
默认值 |
描述 |
---|---|---|
|
|
最初预安装 PIP 依赖项的分支。 |
|
|
预安装 PIP 依赖项的存储库。 |
|
|
允许从 Apache Airflow 的 GitHub 预缓存 airflow PIP 包。这允许优化镜像构建的迭代次数并加快 CI 构建速度。 |
|
|
允许通过传递新参数来使缓存失效。 |