部署如何与 Airflow 配合使用?

How deployment works with Airflow?

我正在使用 Celery Executor 和此 dockerfile 中的设置。

我正在将我的 dag 部署到调度程序容器的 /usr/local/airflow/dags 目录中。

我可以 运行 我的狗用命令:

$ docker exec airflow_webserver_1 airflow backfill mydag -s 2016-01-01 -e 2016-02-01 

我的 dag 包含一个简单的 bash 运算符:

BashOperator(command = "test.sh" ... )

运算符 运行 是 test.sh 脚本。

但是,如果 test.sh 引用其他文件,例如 callme.sh,那么我会收到 "cannot find file" 错误。

e.g
$ pwd
/usr/local/airflow/dags/myworkflow.py

$ ls
myworkflow.py
test.sh
callme.sh

$ cat test.sh
echo "test file"
./callme.sh

$ cat callme.sh
echo "got called"

当 运行ning myworkflow 时,调用 test.sh 的任务被调用但因未找到 callme.sh.

而失败

我觉得这很混乱。与工作人员共享代码资源文件是我的责任还是气流的责任?如果是我的,那么推荐的方法是什么?我正在考虑使用安装在所有容器上的 EFS,但对我来说它看起来非常昂贵。

对于芹菜执行器,您有责任确保每个工作人员都拥有 运行 工作所需的所有文件。