이번 포스팅에서는 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: 'false'
변경후:
- ./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_airflow:/var/lib/postgresql/data
airflow-init
변경후: -/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 접속
url: https://localhost:8080
id: airflow
password: airflow
5. trigger 실행 및 확인
만들어준 dag가 잘 보이는지 확인하고 재생 버튼을 통해 trigger를 실행합니다.
이러한 방법으로 Docker에서 airflow를 실행할 수 있습니다.