Docker中的Airflow:如何将DAG添加到Airflow中?

Den*_*tes 6 ubuntu docker airflow

我想将DAG文件添加到在Ubuntu上的Docker中运行的Airflow中。我使用了以下git存储库,其中包含配置和指向docker image的链接。当我跑步时docker run -d -p 8080:8080 puckel/docker-airflow webserver,一切正常。但是我找不到将DAG安全添加到Airflow的方法。或者,我跑了docker run -d -p 8080:8080 puckel/docker-airflow webserver -v /root/dags:/usr/local/airflow/dags,也没有成功。

我尝试编辑/config/airflow.cfg并将git凭据添加到包含dag的存储库中,但没有成功。此外,假设此文件夹与Docker容器共享,则/dags在中添加一个home/root/dags包含DAG的文件夹。但是也没有成功。

Docker composer文件包含以下卷设置:

webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./dags:/usr/local/airflow/dags 
Run Code Online (Sandbox Code Playgroud)

但是,当我./dags在运行Docker容器的文件夹中添加内容时,DAG不会出现在Airflow中。

当DAG在Docker中运行时,如何安全地将DAG添加到Airflow?

ski*_*bee 5

添加卷是正确的方法

docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags  puckel/docker-airflow webserver
Run Code Online (Sandbox Code Playgroud)

Mark Nagelberg以下帖子中描述了完整的解释


Jav*_*low 3

默认情况下,在气流配置上有以下行

dags_folder = /usr/local/airflow/dags
Run Code Online (Sandbox Code Playgroud)

这告诉气流从该文件夹加载 dags,在您的情况下,路径引用容器内部。

检查数据库容器是否已启动并正在运行并且airflow initdb已执行。Airflow 使用该元数据数据库来存储 dags 负载。

据我所知,Airflow 调度程序会在每次心跳时加载 dags,因此请确保它有一个合适的执行间隔:

另外,在airflow.cfg中(以秒为单位):

scheduler_heartbeat_sec = 5
Run Code Online (Sandbox Code Playgroud)

检查容器内的气流日志以获得正确的见解也可能会有所帮助。您可以从 shell 运行:

docker logs [container-id | container-name]
Run Code Online (Sandbox Code Playgroud)

希望这能让您对您的问题有所了解。