Airflow如何在docker容器中挂载airflow.cfg

ham*_*dog 7 mount docker docker-compose airflow

我正在 Docker 容器中运行气流,并希望将其挂载airflow.cfg为卷,以便我可以快速编辑配置,而无需重建图像或直接在正在运行的容器中进行编辑。我能够将我的airflow.cfg作为卷安装,并且我的气流网络服务器在启动时成功地从中读取配置。但是,当我在主机上编辑时,更改不会反映在 docker 容器内。

findmnt -M airflow.cfgdocker 容器内部的输出返回:

TARGET                         SOURCE                                                             FSTYPE OPTIONS
/usr/local/airflow/airflow.cfg /dev/sda1[/host/path/airflow/airflow.cfg~//deleted]  ext4   rw,relatim
Run Code Online (Sandbox Code Playgroud)

从该输出看来,它似乎airflow.cfg继续指向airflow.cfg. 是否有任何解决方法可以允许从主机更新配置文件?

我使用puckel github 存储库中的 LocalExecutor 撰写文件作为基础。我将其修改为挂载airflow.cfg在 compose 文件中,而不是将其复制到 Dockerfile 中。

Sav*_*zzo 17

我遇到了同样的问题,我通过将以下行添加到docker-compose.yml网络服务器服务下解决了这个问题

- volumes:
  - ./config/airflow.cfg:/opt/airflow/airflow.cfg
Run Code Online (Sandbox Code Playgroud)

我的配置文件位于名为config文件所在的文件夹中docker-compose.yml


小智 10

为了快速更改 docker 容器内的气流配置,有很多方法。您可以直接更改环境变量,而不是更改airflow.cfg。在docker容器中,可以很容易地直接在docker-compose.yml中修改。您只需快速重新启动 docker-compose 即可。

以下是一些常见的配置变量:

  1. dag_folder : AIRFLOW__CORE__DAGS_FOLDER
  2. sql_alchemy_conn:AIRFLOW__CORE__SQL_ALCHEMY_CONN
  3. executor:AIRFLOW__CORE__EXECUTOR 所有配置变量可以在官方文档中找到

下面是我的气流 docker-compose 片段

 webserver:
     image: apache/airflow:1.10.12
     depends_on:
         - postgres
     environment:
         - AIRFLOW_HOME=/opt/airflow
         - AIRFLOW__CORE_dags_folder=/opt/airflow/dags
         - AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql://airflow:airflow@postgres/airflow
         - AIRFLOW__CORE__EXECUTOR=LocalExecutor
         - AIRFLOW__CORE__FERNET_KEY=#####youkey################
     volumes:
         - ./dags:/opt/airflow/dags
     command: webserver
Run Code Online (Sandbox Code Playgroud)