요약

  1. Mac에 Docker Desktop 설치 후, 하위 폴더들 생성
  2. Python 가상환경에 apache-airflow 설치(vscode 활용)
  3. docker-compose.yaml 다운로드 및 수정
  4. Airflow 실행 및 DAG 등 파일 경로 설정
  5. git 업로드

1. docker 설치

방법1(추천): Docker Desktop 설치

docker
docker --version

방법2: Brew로 설치

  • brew install cask docker
    • 도커 사전지식 없는 경우 추천
    • Docker Desktop on Mac 설치
    • docker-compose, docker-machine 설치
    • 포트포워딩 불필요
  • brew install docker
    • 가상머신 위 도커 띄우는 작업 필요
    • docker-compose, docker-machine 추가 설치 필요
    • 포트포워딩 필요

2. apache-airflow 설치

vscode 내 가상환경 생성

  1. airflow 폴더 생성: vscode/airflow
  2. airflow 폴더 내 가상환경(venv) 생성
  3. 파이썬 인터프리터 설치
    1. Python: Select Interpreter
    2. {'venv':venv} 설정
  4. 현재 디렉토리 아래 venv라는 폴더 생성 후 가상환경 설정
python -m venv ./venv

airflow 설치

  • airflow 공식 홈페이지 에서 python library 설치
  • (추천) 가상환경(venv) 내 termina을 통해 설치
    • Successfully installed 뜨면 성공! (2024-05-06 기준)
pip install "apache-airflow[celery]==2.9.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"

3. 도커 관리 문서(docker-compose.yaml) 설정

docker-compose.yaml 다운로드

  1. vscode 내 airflow 프로젝트 폴더 이동
  2. 해당 폴더에 docker-compose.yaml 다운로드(공식 홈페이지 / 2024-05-06 기준 버전: 2.9.1)
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.1/docker-compose.yaml'

vscode 내 초기 설정

  1. vscode 내 airflow 프로젝트 폴더에 하위 폴더 4개 생성(dags, logs, plugins, config)
  2. 호스트 및 컨테이터 파일 권한 설정(.env 파일 생성)
    1. vi .env로 파일 확인
    2. q: 현재 세팅된 나의 os계정의 UID 가 501
  3. DB 마이그레이션과 계정 생성
    1. exited with code 0: 제대로 설치 완료
    2. 최초 계정(ID 및 PW 모두: airflow)
      1. 향후 수정 필요!
mkdir -p ./dags ./logs ./plugins ./config
# 호스트, 컨테이너 파일 권한 설정
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
# DB 마이그레이션과 계정 생성
sudo docker compose up airflow-init

계정 및 패스워드 수정

  1. 방법1(추천): 사이트 내 수정(프로필 수정)
    1. Edit User 에서 계정명 변경
    2. Reset Password에서 비밀번호 변경
  2. 방법2: 생성한 .env 파일 내 설정(변수 추가)
    1. _AIRFLOW_WWW_USER_USERNAME=계정명
    2. _AIRFLOW_WWW_USER_PASSWORD=패스워드

4. Airflow 실행

실행

  1. airflow 올리기(백그라운드로 실행)
  2. 계속 실행중인 상황 = 정상!
    1. Why? airflow가 기본적으로 health 체크를 기록함
    2. 이때, 기존 터미널 종료시 서비스가 내려가므로 꼭 새로운 터미널을 열어서 작업할 것
    3. 이러한 불편함을 해소하기 위해 처음 airflow 올릴 때 백그라운드로 실행(-d)하면 기존 terminal에서 작업 가능!
  3. airflow를 띄우는데 필요한 컨테이너 목록 확인
    1. 6개의 항목과 필요한 IMAGE 확인 가능
# upload airflow
sudo docker compose up -d
# check container
docker ps

5. 경로 설정

  • 로컬에서 작성한 dag 파일 뿐만 아니라 플러그인 파일을 자동으로 Airflow에 업로드 될 수 있도록 경로를 설정함
  • docker-compose.yamlvolumes:에 해당하는 경로를 수정함
    • ${AIRFLOW_PROJ_DIR:-.}: 현재 디렉토리를 의미
  • vscode 내 airflow 프로젝트 파일에 airflow를 설치하고, yaml 파일도 설치하였기 때문에 별다른 경로 수정 불필요
  • /dags : 로컬 시스템의 디렉터리 경로. 즉, 작업 중인 프로젝트의 Airflow DAG 파일이 위치한 경로
  • :: Host와 Container 경로를 구분하는 구분자
  • /opt/airflow/dags: Container 내부의 디렉터리 경로. 즉, Host에서 마운트한 파일 또는 디렉터리가 해당 경로에 들어가며, Airflow 컨테이너에서의 DAG 파일이 해당 경로에 저장됨
- ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
- ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
- ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config
- ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins

6. git 업로드

  • 참고사항: Git 개념 정리
    # 1. 초기 작업
    git init
    git remote add origin <url>
     
    # 2. git 저장
    git add <file>
    git commit -m "<message>"
    git push -u origin <branch_name>
    Link to original

0. 환경 초기화

문제 발생 시 초기화를 권장

아래 코드를 통해 설치한 파일 모두 지우고, 처음부터 재실행

# docker-compose.yaml 파일이 있는 경로에서 다음 실행
docker-compose down --volumes --remove-orphans
# docker-compose.yaml 파일 위치한 경로 제거
rm -rf <DIRECTORY>

참고 사이트