【问题标题】:Apache Airflow configuration files: Environment variables in docker-compose file doesn't workApache Airflow 配置文件:docker-compose 文件中的环境变量不起作用
【发布时间】:2021-11-22 10:14:50
【问题描述】:

在 apache 气流配置中,我尝试使用 docker-compose 文件中的环境变量将 Sequential executor 更改为 Celery executory:

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 时,它​​仍然是 Sequential Executor。

第一个问题:如何将其更改为 CeleryExecutor?

第二个问题:一般来说,我应该如何配置Apache Airflow:通过环境变量还是通过配置文件?

第三个问题:如果是通过配置文件,那么我应该挂载配置文件还是有其他更好的解决方案?

【问题讨论】:

    标签: docker airflow


    【解决方案1】:

    变量不会改变配置文件。它们会覆盖那里的值。 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 所述

    【讨论】:

    • 感谢您的回答!我想问你,也许是愚蠢的问题:定义环境变量的最佳方法是什么?修改airflow.cfg 文件的最佳方法是什么?只是安装它?(我在docker中使用apache气流)
    • 取决于你想做什么。没有“最好”的方式。如果您希望能够轻松更改它,则覆盖 env vartiables 很好,修改和挂载 cfg 文件可能是更多“持久方式”的好主意,但您也可以用 airlfow.cfg 替换构建自己的图像(这是最“持久”的方式)。这取决于你选择哪一种。
    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2019-06-11
    • 2018-02-11
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    相关资源
    最近更新 更多