Docker中的Airflow:如何向Airflow添加DAG?

14
我希望将DAG文件添加到运行在Ubuntu上的Docker中的Airflow。 我使用了包含配置和docker映像链接的git存储库。 当我运行docker run -d -p 8080:8080 puckel/docker-airflow webserver时,一切正常。 但是我找不到安全地向Airflow添加DAG的方法。 或者,我运行docker run -d -p 8080:8080 puckel/docker-airflow webserver -v /root/dags:/usr/local/airflow/dags,也没有成功。
我尝试编辑 /config/airflow.cfg 并将git凭据添加到包含dags的存储库中,但是没有成功。 我还在home/root/dags中添加了一个名为/dags的文件夹,其中包含DAG,假设此文件夹与Docker容器共享。 但是也没有成功。
Docker composer文件包含以下卷设置:
webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./dags:/usr/local/airflow/dags 

当我将文件添加到从其中运行Docker容器的文件夹./dags时,DAG不会出现在Airflow中。

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

4个回答

8

添加一个卷是正确的方法。

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

详细的解释请看Mark Nagelberg的以下文章


它不起作用了,但现在它甚至找不到那个自动接收并重命名的1个Python文件。docker run -d -p 8080:8080 -v /Users/YEP_THIS_IS_MY_ACTUAL_ROUT/dags:/usr/local/airflow/dags puckel/docker-airflow webserver 无法在本地找到映像 'puckel/docker-airflow:latest' - sogu
这是我的实际本地路径吗 -> :/usr/local/airflow/dags?这是标准路径吗 :/usr/local/airflow/dags?这是Web服务器的容器名称还是一些内部路由 puckel/docker-airflow webserver - sogu

3

默认情况下,您的Airflow配置文件中应包含以下行:

dags_folder = /usr/local/airflow/dags

这会告诉Airflow从该文件夹加载dags,在您的情况下,该路径引用容器内部。
请检查数据库容器是否已启动并运行,并且已执行airflow initdb。Airflow使用元数据数据库来存储其加载的dags。
据我所知,Airflow调度程序每个心跳周期都会加载dags,因此请确保为其设置合理的执行间隔:
此外,在您的airflow.cfg中(以秒为单位):
scheduler_heartbeat_sec = 5

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

docker logs [container-id | container-name]

希望这能给你一些关于你问题的见解。

我应该在哪里找到这个Airflow配置? - thegreatcoder

2

我已经使用docker中的airflow一段时间了,但代码的加载和重新加载仍然有些不稳定。对我来说最好的解决方案是每次添加新的dag或修改dag的代码时,只需重新启动整个项目(docker-compose up -d --build),这样web服务器、调度程序和工作程序就会更新。


1
我的docker和airflow都运行得很好。添加的每个dags都可以顺利测试和运行。
方法如下: 1. 除了只曝露dags文件夹之外,暴露整个airflow卷。
webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./airflow:/usr/local/airflow
  1. 编辑airflow配置文件中的dags文件夹配置(默认情况下不需要编辑,因为它在airflow文件夹下)
  2. 每次都要检查dag名称是否出现,使用以下命令:

    airflow list_dags

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


我必须始终重新启动我的容器才能添加新的DAG,这是正常情况吗? - Fyzzys
好的。CLI:airflow list_dags 可以用来检查您的dag是否可以找到。如果我没记错的话,默认配置下,Web UI将在大约300秒内知道dags的存在。要刷新网页,您需要使用页面刷新(或按F5)在Web浏览器中。 - Yong Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接