Apache-Airflow를 사용하기 위해서 도커를 이용하여 설치하는 방법을 정리한 내용입니다.
시작하기 앞서, 준비!
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'
docker-compose.yaml 내 서비스
airflow-scheduler : 모든 task와 DAG를 모니터링
airflow-webserver : 에어플로우 웹 서버. http://localhost:8080
airflow-worker : 스케줄러로부터 부여된 테스크들을 실행하기 위한 워커
airflow-init : 서비스 이니셜라이제이션
postgres(DB) : 데이터 베이스
redis : 스케줄러에서 워커로 메시지를 보내는 브로커
* 서비스는 Celery Executor로 실행됨
(참고) JSON형태가 익숙하다면, YAML -> JSON 포맷으로 변환하여 확인하면 좀 더 이해하기 쉬움 (링크)
docker compose up
코드로 멀티 컨테이너 서비스 띄우기
docker-compose up
docker ps
명령어로 현재 띄어진 서비스별 컨테이너를 확인할 수 있음컨테이너의 폴더는 마운트됨 → 컴퓨터와 컨테이너간의 일치
(yaml파일 내 volume 항목 안에 각각의 directory를 매치해주면 됨)
- ./dags : Dag file 디렉토리
- ./logs : task 실행 과 스케줄러의 로그 파일
- ./plugins : 커스텀 플러그인(링크)
Option
환경을 모니터링함
docker compose --profile flower up
혹은
docker compose up flower
mkdir -p ./dags ./logs ./plugins # mkdir -p 옵션 : 여러 하위 디렉토리를 생성시에 사용한다.
echo -e "AIRFLOW_UID=$(id -u)" > .env
AIRFLOW_UID=50000
docker-compose up airflow-init
Airflow command를 실행시키기 위해서는 두가지 방법이 있음
docker-compose run airflow-worker airflow info
입력curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/airflow.sh'
chmod +x airflow.sh
Mac 또는 Linux의 경우에는 아래 코드 실행 후 sh파일로 실행시킴
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/airflow.sh'
chmod +x airflow.sh
위 코드 실행시 airflow.sh 파일이 생성됨
./airflow.sh airflow info
1, 2번 모두 실행시 아래와 같은 동일한 결과를 얻을 수 있음
ENDPOINT_URL="http://localhost:8080/"
curl -X GET \
--user "airflow:airflow" \
"${ENDPOINT_URL}/api/v1/pools"
docker compose down --volumes --rmi all
확장된 이미지를 사용할 때(새로운 파이썬 패키지 추가, airflow provider 최신 버전 업그레이드 등) 이미지를 커스텀할 수 있음
아래 예시는 에어플로우 개발을 위한 docker-compose.yaml 파일에 airflow-code-editor를 설치하기 위한 과정을 정리함
docker-compose.yaml
파일 내 build : .
명령어를 추가 Dockerfile을 docker-compose.yaml
파일 위치에 추가
airflow-code-editor 패키지를 설치하는 명령어를 Dockerfile
내에 기재 (명령어 참고 문서)
FROM apache/airflow:2.5.1-python3.8
RUN pip install airflow-code-editor
두 파일이 있는 위치에서 docker-compose build
명령어를 통해 이미지를 빌드
기존 에어플로우와 Dockerfile을 이용하여 airflow-code-editior 패키지를 설치하여 이미지를 생성
docker-compose build
빌드된 도커 이미지를 실행
docker-compose up
결과 확인
큰 도움이 되었습니다! 감사합니다