Apache Airflow 配置文件:docker-compose 文件中的环境变量不起作用
Apache Airflow configuration files: Environment variables in docker-compose file doesn't work
在 apache airflow 配置中,我尝试使用 docker-compose 文件中的环境变量将顺序执行程序更改为 Celery 执行程序:
version: '3'
x-airflow-common:
&airflow-common
# In order to add custom dependencies or upgrade provider packages you can use your extended image.
# Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml
# and uncomment the "build" line below, Then run `docker-compose build` to build the images.
#image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.2.1}
build: .
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
但是当我检查 config_file 它仍然是顺序执行器。
第一个问题:怎么改成CeleryExecutor?
第二个问题:一般来说,我应该如何配置Apache Airflow:通过环境变量还是通过配置文件?
第三个问题:如果是通过config文件,是挂载config文件还是有更好的办法?
变量不会改变配置文件。他们覆盖那里的值。读取配置值时的 Airflow 将首先尝试查看是否定义了环境变量 - 如果是,那么它将使用它代替配置文件。配置文件将保持原样。
参见https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html,您会发现 Airflow 读取配置的“优先顺序”。
验证变量是否正确设置的方法是执行
airflow config list
CLI 命令https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#list
它会向您展示“有效”的配置 - 即 Airlfow 在处理所有按照优先顺序读取配置值的可能性后看到的内容。这样你就可以验证自己有没有弄错了。
使用快速入门 docker compose,您可以 运行 airflow
CLI 命令 https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#running-the-cli-commands
在 apache airflow 配置中,我尝试使用 docker-compose 文件中的环境变量将顺序执行程序更改为 Celery 执行程序:
version: '3'
x-airflow-common:
&airflow-common
# In order to add custom dependencies or upgrade provider packages you can use your extended image.
# Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml
# and uncomment the "build" line below, Then run `docker-compose build` to build the images.
#image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.2.1}
build: .
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
但是当我检查 config_file 它仍然是顺序执行器。
第一个问题:怎么改成CeleryExecutor?
第二个问题:一般来说,我应该如何配置Apache Airflow:通过环境变量还是通过配置文件?
第三个问题:如果是通过config文件,是挂载config文件还是有更好的办法?
变量不会改变配置文件。他们覆盖那里的值。读取配置值时的 Airflow 将首先尝试查看是否定义了环境变量 - 如果是,那么它将使用它代替配置文件。配置文件将保持原样。
参见https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html,您会发现 Airflow 读取配置的“优先顺序”。
验证变量是否正确设置的方法是执行
airflow config list
CLI 命令https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#list
它会向您展示“有效”的配置 - 即 Airlfow 在处理所有按照优先顺序读取配置值的可能性后看到的内容。这样你就可以验证自己有没有弄错了。
使用快速入门 docker compose,您可以 运行 airflow
CLI 命令 https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#running-the-cli-commands