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

时间:2018-09-16 20:48:55

标签: docker ubuntu airflow

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

我试图编辑docker run -d -p 8080:8080 puckel/docker-airflow webserver -v /root/dags:/usr/local/airflow/dags并将git凭据添加到包含dag的存储库中,但没有成功。此外,假设此文件夹与Docker容器共享,则在/config/airflow.cfg中添加一个包含DAG的文件夹/dags。但是也没有成功。

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

home/root/dags

但是,当我在运行Docker容器的文件夹中的webserver: image: puckel/docker-airflow:1.10.0-2 ... volumes: - ./dags:/usr/local/airflow/dags 中添加内容时,DAG不会出现在Airflow中。

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

4 个答案:

答案 0 :(得分:2)

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

dags_folder = /usr/local/airflow/dags

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

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

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

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

scheduler_heartbeat_sec = 5

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

docker logs [container-id | container-name]

希望这对您的问题有一些见解。

答案 1 :(得分:1)

我在docker中使用气流已经有一段时间了,代码的加载和重新加载仍然有些问题。对我来说,最好的解决方案是每次我添加一个新的dag或修改dag的代码只是为了重新启动整个项目(docker-compose up -d --buid)以便Web服务器,调度程序和工作程序都是最新的。

答案 2 :(得分:1)

添加卷是正确的方法

docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags  puckel/docker-airflow webserver

following post by Mark Nagelberg

中有完整的说明。

答案 3 :(得分:0)

我的docker +气流运行良好。添加的每个dag都可以测试和顺利运行。

方法是: 1.暴露整个气流而不是仅暴露dags文件夹。

webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./airflow:/usr/local/airflow
  1. 在气流配置文件中编辑dags文件夹配置(默认情况下,不需要编辑,因为它位于气流文件夹中)
  2. 每次都要通过以下命令检查dag名称是否出现:

    气流list_dags

如果没有,请仔细检查新添加的dag python文件。注意,以上命令可以立即检查dag文件。由于配置或系统负载,气流网通常会延迟几秒钟到几分钟。

祝你好运。