镜像构建参数参考

以下构建参数(docker build 命令中的 --build-arg)可用于生产镜像。 这些参数在你想要自定义镜像时使用。 你可以在从 PyPI 包构建中看到一些示例。

基本参数

这些是您在构建自定义镜像时最常用的参数。

构建参数

默认值

描述

PYTHON_BASE_IMAGE

python:3.8-slim-bookworm

基础 Python 镜像。

AIRFLOW_VERSION

2.10.4

Airflow 的版本。

AIRFLOW_EXTRAS

(请参阅下表)

安装 airflow 时使用的默认附加项。

ADDITIONAL_AIRFLOW_EXTRAS

安装 airflow 时使用的可选额外附加项。

AIRFLOW_HOME

/opt/airflow

Airflow 的 HOME 目录(日志和 SQLite 数据库存储在此处)。

AIRFLOW_USER_HOME_DIR

/home/airflow

Airflow 用户的 Home 目录。

AIRFLOW_PIP_VERSION

<PYPI 中最新可用版本>

使用的 PIP 版本。

AIRFLOW_UV_VERSION

<PYPI 中最新可用版本>

使用的 UV 版本。

AIRFLOW_USE_UV

false

是否使用 UV 构建镜像。这是一个实验性功能。

UV_HTTP_TIMEOUT

300

UV 拉取请求的超时时间(以秒为单位)。

ADDITIONAL_PIP_INSTALL_FLAGS

传递给安装命令的额外 pip 标志(重新安装 pip 本身时除外)

PIP_PROGRESS_BAR

on

PIP 安装的进度条

AIRFLOW_UID

50000

Airflow 用户 UID。

AIRFLOW_CONSTRAINTS

constraints

用于构建镜像的约束类型。 对于常规镜像,可以是 constraints,对于精简镜像,可以是 constraints-no-providers

AIRFLOW_CONSTRAINTS_REFERENCE

从 GitHub 获取约束文件的引用(分支或标签)。 对于 2.0.* 安装,可以是 constraints-mainconstraints-2-0。 如果构建特定版本,你想要将其指向特定标签,例如 constraints-2.10.4。 如果为空则自动检测。

注意

在 Airflow 2.2 之前,镜像还具有 AIRFLOW_GID 参数,但它没有提供任何附加功能 - 只是增加了混乱 - 因此已将其删除。

生产 Dockerfile 中的默认附加项列表

  • 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 镜像中安装的内容,从而允许生成更优化的镜像。 有关使用这些参数的示例,请参阅构建优化的镜像

构建参数

默认值

描述

UPGRADE_INVALIDATION_STRING

如果设置为随机的非空值,则依赖项会升级到更新的版本。 在 CI 中,它设置为构建 ID,以确保后续构建不会重用具有相同值的缓存镜像。

ADDITIONAL_PYTHON_DEPS

可选的 Python 包,用于使用一些额外的依赖项扩展镜像。

DEV_APT_COMMAND

在 Build 镜像中安装 dev 依赖项之前执行的 Dev apt 命令。

ADDITIONAL_DEV_APT_COMMAND

在 Build 镜像中安装 dev 依赖项之前执行的额外 Dev apt 命令。 应以 && 开头。

DEV_APT_DEPS

空 - 安装默认依赖项(请参阅 install_os_dependencies.sh

在 Build 镜像中安装的 Dev APT 依赖项。

ADDITIONAL_DEV_APT_DEPS

在 Build 镜像中安装的额外 apt dev 依赖项。

ADDITIONAL_DEV_APT_ENV

安装 dev 依赖项时定义的额外 env 变量。

RUNTIME_APT_COMMAND

main 阶段安装依赖项之前执行的 Runtime apt 命令。

ADDITIONAL_RUNTIME_APT_COMMAND

main 阶段安装运行时依赖项之前执行的额外 Runtime apt 命令。 应以 && 开头。

RUNTIME_APT_DEPS

空 - 安装默认依赖项(请参阅 install_os_dependencies.sh

在 Main 镜像中安装的 Runtime APT 依赖项。

ADDITIONAL_RUNTIME_APT_DEPS

在 Main 镜像中安装的额外 apt 运行时依赖项。

ADDITIONAL_RUNTIME_APT_ENV

安装运行时依赖项时定义的额外 env 变量。

INSTALL_MYSQL_CLIENT

true

是否应安装 MySQL 客户端。 如果未安装客户端,则从附加项中删除 mysql 附加项。

INSTALL_MYSQL_CLIENT_TYPE

mariadb

MySQL 客户端库的类型。 可以是 mariadbmysql。 无论参数如何,在 ARM 上始终使用 mariadb

INSTALL_MSSQL_CLIENT

true

是否应安装 MsSQL 客户端

INSTALL_POSTGRES_CLIENT

true

是否应安装 Postgres 客户端

使用不同方法安装 Airflow

仅当你想要使用与默认方法不同的安装方法(从 PyPI 包安装)安装 Airflow 时,这些参数才有用。

这通常仅在你拥有自己的 Airflow 分支,并且想要从这些源(无论是本地源还是直接从 GitHub 源)本地构建镜像时才有用。 这样,你就不需要通过 PyPI 发布你的 Airflow 和 Providers - 它们可以直接从源或 GitHub 存储库安装。 另一种安装选项是从先前准备的二进制 Python 包构建 Airflow,如果你需要在需要高安全级别的环境中构建 Airflow,这可能会很有用。

你可以在以下位置看到一些示例

构建参数

默认值

描述

AIRFLOW_INSTALLATION_METHOD

apache-airflow

Apache Airflow 的安装方法。 apache-airflow 表示从 PyPI 安装。 它可以是 GitHub 存储库 URL(包括要从中安装的分支或标签),或者使用 “.” 从本地源安装。 从源安装需要 AIRFLOW_SOURCES_FROMAIRFLOW_SOURCES_TO 变量的适当值(请参阅下文)

AIRFLOW_SOURCES_FROM

Dockerfile

Airflow 的来源。 从本地源安装 Airflow 时,将其设置为 “.”

AIRFLOW_SOURCES_TO

/Dockerfile

Airflow 来源的目标。 从本地源安装 Airflow 时,设置为 “/opt/airflow”。

AIRFLOW_VERSION_SPECIFICATION

可选 - 可用于限制 Airflow 版本安装 - 例如,对于自动构建,使用 <2.0.2

AIRFLOW_CONSTRAINTS_LOCATION

如果非空,它将使用指定的 URL 或文件覆盖约束的来源。 请注意,该文件必须位于 Docker 上下文中,因此最好将此类文件放置在 .dockerignore 文件中包含的某个文件夹中。

DOCKER_CONTEXT_FILES

Dockerfile

如果设置为文件夹(例如 docker-context-files 文件夹),则此文件夹将复制到 docker 上下文内的 docker-context-files 中,并且你将能够从那里存在的二进制文件安装。 默认情况下,我们将其设置为 Dockerfile,因为我们知道该文件在那里,否则 COPY 指令将失败。

INSTALL_PACKAGES_FROM_CONTEXT

false

如果设置为 true,则 Airflow、providers 和所有依赖项都将从放置在 docker-context-files 中的本地构建/下载的 .whl 和 .tar.gz 文件安装。

预缓存 PIP 依赖

从 PIP 构建镜像时,默认情况下会使用 PIP 依赖项的预缓存。 这是为了加快开发期间的增量构建。 当使用预缓存的 PIP 依赖项并且 pyproject.toml 更改时,PIP 依赖项已预先安装,从而大大加快了镜像重建速度。 这纯粹是为了优化构建镜像所需的时间,如果想从 Docker 上下文文件安装 Airflow,则应禁用它。

构建参数

默认值

描述

AIRFLOW_BRANCH

main

最初预安装 PIP 依赖项的分支。

AIRFLOW_REPO

apache/airflow

从中预安装 PIP 依赖项的存储库。

AIRFLOW_PRE_CACHED_PIP_PACKAGES

false

允许从 Apache Airflow 的 GitHub 预缓存 airflow PIP 包。 这允许优化镜像构建的迭代并加快 CI 构建。

PIP_CACHE_EPOCH

"0"

允许通过传递新参数来使缓存失效。

此条目是否有帮助?