Airflow Summit 2025 將於 10 月 07-09 日舉行。立即註冊以獲取早鳥票!

映象構建引數參考

以下構建引數(docker build 命令中的 --build-arg)可用於生產映象。這些引數用於自定義映象。您可以在從 PyPI 包構建中看到一些示例。

基本引數

這些是構建自定義映象時最常用的引數。

構建引數

預設值

描述

PYTHON_BASE_IMAGE

python:3.9-slim-bookworm

基礎 Python 映象。

AIRFLOW_VERSION

3.0.0

Airflow 的版本。

AIRFLOW_EXTRAS

(見表格下方)

安裝 Airflow 時使用的預設 extras。

ADDITIONAL_AIRFLOW_EXTRAS

安裝 Airflow 時可選的額外 extras。

AIRFLOW_HOME

/opt/airflow

Airflow 的 HOME 目錄(日誌和 SQLite 資料庫儲存在此處)。

AIRFLOW_USER_HOME_DIR

/home/airflow

Airflow 使用者的 HOME 目錄。

AIRFLOW_PIP_VERSION

<LATEST_AVAILABLE_IN_PYPI>

使用的 PIP 版本。

AIRFLOW_UV_VERSION

<LATEST_AVAILABLE_IN_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

構建映象時使用的約束型別。可以是 regular 映象的 constraints 或 slim 映象的 constraints-no-providers

AIRFLOW_CONSTRAINTS_REFERENCE

從 GitHub 獲取約束檔案的引用(分支或標籤)。對於 2.0.* 安裝,可以是 constraints-mainconstraints-2-0。如果構建特定版本,您需要將其指向特定的標籤,例如 constraints-3.0.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 映象中安裝的內容,從而生成更最佳化的映象。請參閱構建最佳化的映象瞭解使用這些引數的示例。

構建引數

預設值

描述

UPGRADE_RANDOM_INDICATOR_STRING

如果設定為一個隨機的非空值,依賴項將被升級到新版本。在 CI 中,它被設定為構建 ID,以確保後續構建不會重用具有相同值的快取映象。

ADDITIONAL_PYTHON_DEPS

可選的 Python 包,用於為映象擴充套件一些額外依賴項。

DEV_APT_COMMAND

在構建映象中安裝 dev 依賴項之前執行的 Dev apt 命令。

ADDITIONAL_DEV_APT_COMMAND

在構建映象中安裝 dev 依賴項之前執行的額外 Dev apt 命令。應以 && 開頭。

DEV_APT_DEPS

空 - 安裝預設依賴項(參見 install_os_dependencies.sh

在構建映象中安裝的 Dev APT 依賴項。

ADDITIONAL_DEV_APT_DEPS

在構建映象中安裝的額外 apt dev 依賴項。

ADDITIONAL_DEV_APT_ENV

安裝 dev 依賴項時定義的額外環境變數。

RUNTIME_APT_COMMAND

main 階段安裝依賴項之前執行的 Runtime apt 命令。

ADDITIONAL_RUNTIME_APT_COMMAND

main 階段安裝 runtime 依賴項之前執行的額外 Runtime apt 命令。應以 && 開頭。

RUNTIME_APT_DEPS

空 - 安裝預設依賴項(參見 install_os_dependencies.sh

在 Main 映象中安裝的 Runtime APT 依賴項。

ADDITIONAL_RUNTIME_APT_DEPS

在 Main 映象中安裝的額外 apt runtime 依賴項。

ADDITIONAL_RUNTIME_APT_ENV

安裝 runtime 依賴項時定義的額外環境變數。

INSTALL_MYSQL_CLIENT

true

是否應該安裝 MySQL 客戶端。如果未安裝客戶端,則從 extras 中移除 mysql extra。

INSTALL_MYSQL_CLIENT_TYPE

mariadb

MySQL 客戶端庫的型別。可以是 mariadbmysql。無論引數如何,在 ARM 上始終使用 mariadb

INSTALL_MSSQL_CLIENT

true

Whether MsSQL client should be installed

INSTALL_POSTGRES_CLIENT

true

Whether Postgres client should be installed

使用不同方法安裝 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_DISTRIBUTIONS_FROM_CONTEXT

false

如果設定為 true,Airflow、provider 和所有依賴項將從放置在 docker-context-files 中的本地構建/下載的 .whl 和 .tar.gz 檔案安裝。

依賴快取

我們使用 --mount-type=cache 捲來加快 Airflow 映象依賴項的安裝。結合 uv 的速度和廣泛的快取使用,以及在 CI 環境中快速恢復快取,這使得我們能夠快速構建映象——無論是用於 CI 還是本地開發目的。可以透過提供 DEPENDENCY_CACHE_EPOCH 構建引數的新值或在 Dockerfile 中修改它來輕鬆使快取失效。

構建引數

預設值

描述

DEPENDENCY_CACHE_EPOCH

"0"

透過傳遞新引數允許使快取失效。

本條目有幫助嗎?