
본격적으로 튜토리얼을 진행하기에 앞서, 이번 포스팅에서는 Airflow 설치를 진행하려고 합니다.
튜토리얼을 위한 Airflow 설치는 Docker를 이용하여 진행합니다.
프로젝트 폴더를 만들고 해당 폴더 내에 Docker-compose.yml을 받아와 저장합니다.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.6.2/docker-compose.yaml'
진행할 프로젝트에 맞게 다운로드 받은 파일에 대한 수정을 진행합니다.
1) Docker Image 바꾸기
version: '3.8'
x-airflow-common:
&airflow-common
image: titanic-exmaple:1.0
Docker compose파일에서 기본적으로 제공하는 이미지는 apache/airflow:2.6.2 입니다.
하지만, 해당 이미지에는 몇몇 필요한 패키지가 설치되어 있지 않으므로, 새로 Dockerfile을 작성해서 build를 진행하도록 합니다.
2) volume 추가하기
volumes:
- ${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
- ${AIRFLOW_PROJ_DIR:-.}/titanic:/opt/airflow/titanic
- ${AIRFLOW_PROJ_DIR:-.}/data:/opt/airflow/data
기본적으로 dags, logs, config, plugins 폴더만 매핑되어 있으나
타이타닉 데이터를 이용해 예측을 진행하는 과정이 담긴 코드 titanic과 데이터를 저장할 data 폴더를 추가합니다.
각 폴더의 역할
airflow_local_settings.py 저장Linux에서는 airflow user를 사용자의 id로 설정해 놓지 않으면 생성되는 파일들이 root 권한으로 실행되게 됩니다. 따라서 AIRFLOW_UID를 사용자의 id로 설정해 줍니다.
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
Airflow 사용 전, 데이터베이스 초기화를 진행합니다.
docker compose up airflow-init
초기 아이디와 비밀번호는 둘 다 airflow 입니다.
docker compose up
위 명령어로 Airflow를 실행합니다.
http://localhost:8080에 접속하면 airflow 사이트에 접속할 수 있습니다.
docker compose down --volumes --rmi all
컨테이너 삭제와 함께 볼륨 및 데이터 베이스의 데이터, 이미지 까지 모두 삭제합니다.
[1] https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html