다시 Docker 기반 Airflow 실행 (1)
먼저 터미널 프로그램을 실행하고 적당한 폴더로 이동

저는 D드라이브에 Dev_KDT 아래에 airflow-advanced라는 폴더를 만들었습니다.
이미 learn-airflow Github repo를 다운로드받은 상황이라면
다운로드받은 repo 폴더로 이동여기서 아래를 수행
- git pull
저는 이미 다운 받은 상황이 아니므로 아래와 같이 진행하겠습니다.
아니라면 아래를 수행
learn-airflow Github repo를 먼저 클론
- git clone https://github.com/learndataeng/learn-airflow.git

learn-airflow 폴더로 이동합니다.
learn-airflow 폴더로 이동하고 2.5.1 이미지 관련 yml 파일 다운로드
- cd learn-airflow
- curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'
단 저는 Windows 환경이기 때문에 Unix 기반 명령어인 -Lfo를 사용할 수 없습니다.
Invoke-WebRequest -Uri "https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml" -OutFile "docker-compose.yaml"
위의 명령어를 대신 사용하겠습니다.

docker-compose.yaml 파일이 보입니다.

yaml 파일 안에 위와 같이 하이라이트된 코드들을 추가합니다.
DATA_DIR이라는 변수에 /opt/airflow/data라는 경로를 값으로 정해줬습니다.
yfinance 이하의 라이브러리들이 디폴트로 설치되게 설정했습니다.

우리가 git clone으로 가져온 repo인 learn-airflow 폴더의 data 디렉토리를 Docker Container의 /opt/airflow/data 디렉토리에 마운트하게 volume을 설정했습니다. 이렇게 해두면 개발시 우리가 작성 및 수정한 결과물을 바로 확인할 수 있어 편리합니다.

volumes에 data를 추가했다면
airflow-init 섹션에서 기존에 있던 logs, dags, plugins 3개에 더해 data를 추가합니다.
mkdir과 chown에 하이라이트된 코드를 추가합니다.
chown은 logas, dags, plugins, data 폴더의 주인을 설정하는 곳입니다. AIRFLOW_UID를 0으로 설정했습니다.
실행하기
강의 내용과 헷갈리지 않도록 yaml 파일의 이름을 docker-compose.test.yaml로 바꾸었습니다.
docker compose -f docker-compose.test.yaml up -d
그리고 docker-compose.yaml이 아닌 다른 이름으로 yaml파일 이름이 변경되었으므로 -f 옵션을 주고 백그라운드 실행을 위해 -d 옵션을 사용해 docker up합니다.
시간이 다소 걸립니다.

설치가 끝난 후에 브라우저에서 로그인을해보면 DAG 에러가 몇 있습니다
현재까지는 yaml 파일을 완벽하게 작성하지 않고 모든 필요한 Variables 세팅이 되어있지는 않기 때문입니다.

Web UI 상에서는 Admin > Variables로 가보니 아무 변수들이 없다고 뜹니다.
분명 위에서 yaml 파일을 수정할 때 AIRFLOW_VAR_DATA_DIR: /opt/airflow/data로 변수를 지정했음에도 아무 변수도 조회되지 않습니다.
원래 yaml파일에서 설정한 변수들은 Web UI에서 조회되지 않는다고 말씀드렸습니다.
터미널에서 변수를 조회해보겠습니다.
docker exec -it learn-airflow-airflow-scheduler-1 airflow variables get DATA_DIR
(생략..)
/opt/airflow/data
docker compose로 구성된 컨테이너의 이름은 그 컨테이너가 존재하는 폴더의 이름이 prefix로 붙는다고 했었습니다. 우리가 git clone으로 가져온 repo의 이름인 learn-airflow가 airflow-scheduler-1이라는 컨테이너 앞에 붙어 최종적으로 이름이 learn-airflow-airflow-scheduler-1이 되는 것입니다. docker ps 명령어로 컨테이너들을 조회하시면 prefix가 붙은 것을 보실 수 있을 겁니다.
이렇게 스케쥴러에서 DATA_DIR이라는 변수를 찾으니 /opt/airflow/data가 조회됩니다.
'Airflow 고급 기능, dbt, Data Catalog' 카테고리의 다른 글
| Airflow와 구글시트 연동하기 - 개요와 sheet → Redshift (0) | 2024.01.02 |
|---|---|
| Slack 연동하기 (0) | 2024.01.02 |
| Summary 테이블 구현 (0) | 2024.01.02 |
| ELT 작성과 구글시트/슬랙 연동 (0) | 2024.01.01 |
| 개요 (0) | 2024.01.01 |