映像檔建置引數參考

以下建置引數(docker 建置命令中的 --build-arg)可用於生產映像檔。這些引數用於您想要自訂映像檔時。您可以在從 PyPI 套件建置中看到一些範例。

基本引數

這些是您想要建置自訂映像檔時最常用的引數。

建置引數

預設值

描述

PYTHON_BASE_IMAGE

python:3.8-slim-bookworm

基礎 python 映像檔。

AIRFLOW_VERSION

2.10.4

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 pull request 的逾時時間 (秒)。

ADDITIONAL_PIP_INSTALL_FLAGS

傳遞至安裝命令的其他 pip 旗標 (重新安裝 pip 本身時除外)

PIP_PROGRESS_BAR

on

PIP 安裝的進度列

AIRFLOW_UID

50000

Airflow 使用者 UID。

AIRFLOW_CONSTRAINTS

constraints

建置映像檔的 constraints 類型。這可以是常規映像檔的 constraints 或精簡映像檔的 constraints-no-providers

AIRFLOW_CONSTRAINTS_REFERENCE

從 GitHub 取得 constraints 檔案的參考 (分支或標籤)。對於 2.0.* 安裝,可以是 constraints-mainconstraints-2-0。如果要建置特定版本,您需要將其指向特定標籤,例如 constraints-2.10.4。如果為空則自動偵測。

注意

在 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 映像檔中安裝的內容,從而產生更佳最佳化的映像檔。有關使用這些引數的範例,請參閱建置最佳化映像檔

建置引數

預設值

描述

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 依賴項時定義的其他環境變數。

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 用戶端。如果未安裝用戶端,則 mysql extra 會從 extras 中移除。

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 或檔案覆寫 constraints 的來源。請注意,該檔案必須位於 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"

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

此條目是否有幫助?