2017-08-04 126 views
0

我正在使用芹菜執行器和此dockerfile的設置。部署如何與Airflow協同工作?

我正在將我的dag部署到/usr/local/airflow/dags目錄到調度程序的容器中。

我能夠用命令來運行我的DAG:

$ 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,則會收到「無法找到文件」錯誤。

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" 

運行myworkflow時,會調用調用test.sh的任務,但會因未找到callme.sh而失敗。

我覺得這很容易混淆。與工作人員或氣流的責任分享代碼資源文件是我的責任嗎?如果是我的,那麼推薦的方法是什麼?我正在使用安裝在所有容器上的EFS,但它看起來對我來說非常昂貴。

回答

0

對於芹菜執行者,您有責任確保每位工人都擁有運行作業所需的所有文件。