Dockerfile
FROM python:3.11-slim
ENV AIRFLOW_HOME=/usr/local/airflow
RUN apt-get update&& \
apt-get install -y gcc libc-dev && \
rm -rf /var/lib/apt/lists/*
RUN pip install apache-airflow
RUN mkdir -p $AIRFLOW_HOME
WORKDIR $AIRFLOW_HOME
RUN airflow db init
COPY my_dag.py $AIRFLOW_HOME/dags
EXPOSE 8080
CMD airflow webserver -p 8080 & airflow scheduler
Dockerfile과 my_dag.py 파일 작성후 docker 빌드
docker build -t my_airflow .
docker run --name my_airflow -d -p 8080:8080 my_airflow_fastcampus
도커 실행후 도커 접속
docker exec -it <containerID> /bin/bash
유저생성후
airflow users create --username admin --firstname do --lastname yeo --role Admin --email yeo@gractor.com
생성완료후 비밀번호 설정후 아래와 사진과 같이 출력
docker 접속후
경로 "/usr/local/airflow/dags"
⚠️dags폴더가 없을시 생성
dags폴더 안에 py 파일 작성
샘플코드
hello_airflow_dag.py
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
#DAG정의
default_args = {
'owner' : 'yeo',
'depends_on_past':False,
'start_date' :datetime(2024,12,20),
'email_on_failure':False,
'emailt_on_retry':False,
'retries':1,
'retry_delay':timedelta(minutes=5),
}
dag = DAG(
'hello_airflow_dag',
default_args=default_args,
description ="our first time practice airflow",
schedule_interval=timedelta(days=1),
)
sentece = "hello airflow dag. we can do it."
def print_word(word):
print(word)
prev_task = None
for i ,word in enumerate(sentece.split()):
task=PythonOperator(
task_id=f'print_word_{i}',
python_callable=print_word,
op_kwargs={'word':word},
dag=dag,
)
if prev_task:
prev_task >> task #의존성 task
prev_task = task
코드작성후
sync
localhost:8080에서 로그인후 DAGs 탭 접속후 아래 사진과 같이 생성된거 확인
우측 상단에 trigger 버튼 누르고 실행 완료 될때까지 기다린후 DAGs graph 확인
아래 사진과 같이 개별 DAG 누를경우 Logs 메뉴 들어가서 확인
아래 사진과 같이 개별 DAG 누를경우 Logs 메뉴 들어가서 확인 해당되는 출력 확인가능
