Airflow Docker部署:在start_date + schedule_interval之后,任务未运行

我是Airflow的新手。 我想我已经阅读了关于调度的Airflow文档中的所有文章,但我仍然无法让我的DAG在start_date + schedule_interval(即没有任务实例)之后运行。 我正在使用docker。 我想知道我缺less一个调度Dags的命令,尽pipe在我使用教程代码时并不是这样。

这是我的dockerfile。

FROM ubuntu:latest FROM python:3 RUN apt-get update -y RUN apt-get install -y python-pip python-dev apt-utils build-essential RUN pip install --upgrade pip # Installs these and a few others # mysqlclient==1.3.10 # airflow==1.7.1.3 COPY dependencies /dependencies RUN pip install -r dependencies/requirements_loader.txt COPY airflow /root/airflow # Load other dependencies # I have tried many different variation of these commands with no luck CMD airflow webserver -p 8080 CMD airflow scheduler -d DAG_id 

我正在使用PythonOperator和一个加载我编写的库的模块。 我不知道这是否是正确的方式,但它的工作airflow test dag_id execution_date 。 这是我最特别的。 testing工作,但是当我开始气stream时它实际上从未运行。 我正在使用LocalExecutor。 这是我的dag。

 from airflow import DAG from airflow.operators.python_operator import PythonOperator from datetime import datetime, timedelta from my_lib import my_func default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2017, 3, 6), 'email_on_failure': False, 'email_on_retry': False, 'email': ['airflow@airflow.com'], 'retries': 1, 'retry_delay': timedelta(minutes=5) } dag = DAG('dag_id', default_args=default_args, schedule_interval="31 2 * * *") t1 = PythonOperator( dag=dag, task_id='run_my_func', provide_context=False, python_callable=my_func) 

我也搞乱了时间间隔和开始date,包括一个月前以@daily间隔开始的date。 这些都没有给我任何运气。

真正令人困惑的是,当我testing一个DAG的时候它可以工作,但是它没有被调度,并且在部署之后创build任何task_instances。

任何人都可以指出我正确的方向进行部署,确保正确安排日程安排? 我做错了什么?

问题是你不能在dockerfile的末尾使用两个CMD命令。 一旦我用docker-compose创build了两个dockerfiles,它工作正常。

Dockerfile中只能有一个CMD指令。 如果列出多个CMD,则只有最后一个CMD才会生效。

https://docs.docker.com/engine/reference/builder/#cmd