아미(아름다운미소)

airflow 초기셋팅 본문

서버/airflow

airflow 초기셋팅

유키공 2024. 11. 18. 08:31
your-project-directory/
│
├── dags/                   # DAG 파일을 저장하는 디렉토리
│   └── your_dag.py         # 예시 DAG 파일
│
├── Dockerfile              # Dockerfile
│
└── docker-compose.yml      # docker-compose.yml 파일

Dockerfile

FROM apache/airflow:2.5.0

# 한국 시간대 설정
ENV TZ=Asia/Seoul
RUN apt-get update && apt-get install -y tzdata && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
    echo $TZ > /etc/timezone

docker-compose.yml

version: '3'

services:
  airflow-webserver:
    build: .
    restart: always
    depends_on:
      - airflow-scheduler
    ports:
      - "8080:8080"
    environment:
      - AIRFLOW__WEBSERVER__SECRET_KEY=your_secret_key
      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
      - AIRFLOW__CORE__DAGS_FOLDER=/opt/airflow/dags
      - TZ=Asia/Seoul  # 한국 시간대 설정
    volumes:
      - ./dags:/opt/airflow/dags

  airflow-scheduler:
    build: .
    restart: always
    environment:
      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
      - AIRFLOW__CORE__DAGS_FOLDER=/opt/airflow/dags
      - TZ=Asia/Seoul  # 한국 시간대 설정
    volumes:
      - ./dags:/opt/airflow/dags

  airflow-init:
    build: .
    command: ["airflow", "db", "init"]
    environment:
      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
      - TZ=Asia/Seoul  # 한국 시간대 설정
    volumes:
      - ./dags:/opt/airflow/dags
docker-compose build
docker-compose up

your_dag.py

from airflow import DAG
from airflow.operators.dummy import DummyOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2023, 11, 17),
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(
    'my_kst_dag',
    default_args=default_args,
    description='A simple DAG running on KST',
    schedule_interval='0 0 * * *',  # UTC 기준으로 매일 자정 (한국 시간 오전 9시)
)

start = DummyOperator(task_id='start', dag=dag)
Comments