Docker コンテナで Apache Airflow を使ってみる

  1. 任意のディレクトリを作る
  2. Docker Compose ファイルをダウンロードし、実行する
  3. DAG を追加する
  4. 再起動して確認する
  5. DAG を実行する

1. 任意のディレクトリを作る

% mkdir docker_airflow
% cd docker_airflow

2. Docker Compose ファイルをダウンロードし、プロジェクトを実行する

% curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.6.1/docker-compose.yaml'
% mkdir -p ./dags ./logs ./plugins ./config
% docker-compose up airflow-init
% docker-compose up -d

ブラウザで「http://127.0.0.1:8080」を開いてログインします。

3. DAG を追加する

プロジェクトディレクトリ直下の「dags」に下記の my_dag.py を追加しました。

色々書いてありますが、下の方で「bash_command='echo "Hello, Airflow!"'」となっている通り、Hello, Airflow! と表出するプログラムになっています。

# my_dag.py

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2023, 1, 1),
}

with DAG(dag_id='my_dag', schedule_interval='@daily', default_args=default_args) as dag:
    task1 = BashOperator(
        task_id='task1',
        bash_command='echo "Hello, Airflow!"'
    )

    task1

4. プロジェクトを再起動する

% docker-compose down
% docker-compose up -d

再度ブラウザで「http://127.0.0.1:8080」を開いてログインします。

5. DAG を実行する

で、「my_dag」を実行してみます。

実行が完了したらログを見てみます。

「Hello Airflow!」と表出されています。新たに追加した DAG がきちんと機能しています。

[2023-05-23, 08:36:59 UTC] {subprocess.py:75} INFO - Running command: ['/bin/bash', '-c', 'echo "Hello, Airflow!"']
[2023-05-23, 08:36:59 UTC] {subprocess.py:86} INFO - Output:
[2023-05-23, 08:36:59 UTC] {subprocess.py:93} INFO - Hello, Airflow!
[2023-05-23, 08:36:59 UTC] {subprocess.py:97} INFO - Command exited with return code 0