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