🧩 BE
home

단일 인스턴스에서 간단한 DAG 돌리기

Date
2025/09/05
Category
Data Engineering
Tag
Apache Airflow
Detail
패치노트 크롤링을 하면서 홈서버에 Airflow를 올리고 DAG를 배포했다.
컨테이너 기반 인프라를 구성하려는 목적에 맞게 공식 문서에서 compose 파일을 받아서 올릴까 했지만, PostgreSQL, celery용 Redis, worker 설정 등 컨테이너가 최소 5개는 필요했다. 크롤링은 패치노트 데이터 구축 목적으로만 활용할거라, 일단 최소한의 구성으로 Airflow 컨테이너를 올렸다.
배포는 GitHub Actions를 활용했다. 홈서버라는 단일 인스턴스 자원으로 컨테이너를 올릴거라 docker-compose 파일을 만들었고, 과정에서 설정파일에 대한 보안을 위해 배포과정에서 Actions Secrets를 .env로 연결해줬다.
envs: AIRFLOW_UID, AIRFLOW__CORE__FERNET_KEY, DOCKER_HUB_USERNAME script: | export AIRFLOW_UID=${AIRFLOW_UID} export AIRFLOW__CORE__FERNET_KEY=${AIRFLOW__CORE__FERNET_KEY} export DOCKER_HUB_USERNAME=${DOCKER_HUB_USERNAME}
YAML
복사
다음엔 배포시 아예 실행 환경을 self-hosted로 해서 홈서버에 종속적인 배포 환경을 만들고, Secrets를 github에서 주입받는게 아니라 애초에 홈서버에 저장해두고 바로 가져다 쓰는 식으로 구성하는 방식을 도입해볼까 한다. GitHub Actions는 매번 VM 새로 만들어서 올리는거고, 배포 속도면에서 꽤 많은 차이가 있을거 같아서 좋을 것 같다.
이후, docker-compose.yml에서는 airflow-scheduler와 이를 depends 하는 airflow-webserver 두 개의 컨테이너를 구성했다.
err: time="2025-09-09T19:01:08+09:00" level=warning msg="/home/***/lp-patchnote/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
Plain Text
복사