본문 바로가기
카테고리 없음

[Docker] Docker-compose를 이용한 Airflow 초기 설정방법

by JustJunsu 2025. 2. 4.
반응형

이번 포스팅에서는 Docker-compose.yaml 파일을 이용하여 Airflow를 설치하고 Dag를 사용하는 방법을 포스팅 하겠습니다.

0. docker_airflow_tutorial 디렉토리

docker_airflow_tutorialㄴ volumes     ㄴairflow          ㄴdags               ㄴtest_dag.py

          ㄴlogs

          ㄴconfig

          ㄴplugins

          ㄴpython_files

               ㄴ test_python.py

     ㄴpostgres_airflow

ㄴdocker-compose.yaml

 

1. Docker-compose.yaml 파일 만들기

1.1 Airflow Docker-compose.yaml 파일 다운로드

mkdir docker_airflow_tutorial
cd docker_airflow_tutorial

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml'

 

1.2 Airflow Docker-compose yaml 파일 수정하기

x-airflow-common

    AIRFLOW__CORE__LOAD_EXAMPLES: 'true'

 

변경후:  -  AIRFLOW__CORE__LOAD_EXAMPLES: 'false'

 

 
  volumes:
    - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
    - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
    - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config
    - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins

 

변경후:

- ./volumes/airflow/dags:/opt/airflow/dags

- . /volumes/airflow/logs:/opt/airflow/logs

- . /volumes/airflow/config:/opt/airflow/config

- . /volumes/airflow/plugins:/opt/airflow/plugins

- . /volumes/airflow/python_files:/usr/app/data

 

추가적으로 dag를 통해 실행시킬 파이썬 파일들의 volumes을 함께 매핑해주었습니다.

postgres

    volumes:
      - postgres-db-volume:/var/lib/postgresql/data

 

변경후: - volumes/postgres_airflow:/var/lib/postgresql/data

airflow-init

    volumes:
      - ${AIRFLOW_PROJ_DIR:-.}:/sources

 

변경후: -/volumes/airflow:/sources

 

2. dag 파일 만들기

# test_dag.py

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

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'retries': 1,
}

with DAG(
    dag_id='run_python_script',
    default_args=default_args,
    schedule_interval=None,
    start_date=datetime(2025, 1, 1),
    catchup=False,
) as dag:

    run_script1 = BashOperator(
        task_id='run_python_file1',
        bash_command='python /usr/app/data/test_python.py',  # Python 파일 실행 경로
    )

    run_script2 = BashOperator(
        task_id='run_python_file2',
        bash_command='python /usr/app/data/test_python.py',  # Python 파일 실행 경로
    )

    run_script1 >> run_script2

3. python 파일 만들기

# test_python.py

print("test!")

 

4. airflow 접속

airflow 접속 화면

url: https://localhost:8080

id: airflow

password: airflow

 

5. trigger 실행 및 확인

dag 확인

만들어준 dag가 잘 보이는지 확인하고 재생 버튼을 통해 trigger를 실행합니다.

이러한 방법으로 Docker에서 airflow를 실행할 수 있습니다.

반응형