데브코스-데이터엔지니어링

Airflow 설치 - Docker

묠니르묘묘 2024. 5. 23. 19:01

Apache Airflow 공식 홈페이지 - Running Airflow in Docker 에서 참고하였습니다.

 

1. 시작 전 (Before you begin)

  1. Docker Community Edition(CE)을 본인 컴퓨터에 설치합니다. OS에 따라 Airflow 컨테이너가 제대로 실행되려면 최소 4.00GB에서 권장 8.00GB 메모리를 사용하도록 Docker를 구성해야 합니다. 자세한 내용은 Windows Docker 또는 Mac Docker 를 참고하세요.
  2. 컴퓨터에 Docker Compose v2.14.0 이상 설치해야 합니다. 버전을 확인하려면 `docker compose version` 명령어를 실행하세요.
% docker compose version
Docker Compose version v2.26.1-desktop.1

 

 

2. docker-compose.yaml 가져오기

airflow를 설치할 폴더로 이동하여 docker-compose.yaml 파일을 다운로드합니다.

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.1/docker-compose.yaml'

 

 

3. 환경설정 초기화 (Initializing Environment)

Airflow 를 처음 시작하기 전에 환경을 준비해야합니다.

즉, 필요한 파일과 디렉토리를 생성하고 DB를 초기화해야 합니다.

 

Airflow 사용자 설정 (Setting the right Airflow user)

Linux(리눅스)에서 빠른 시작은 호스트 사용자 아이디를 알아야하고 그룹 아이디가 0으로 설정되어야 합니다.

그렇지 않으면 dags, logs, plugins 에서 생성되는 파일이 루트 사용자 소유권으로 생성됩니다.

mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env

여기서 저는 디렉토리만 생성하였고, echo 명령어는 실행하지 않았습니다.

리눅스가 아닌 다른 운영체제의 경우 AIRFLOW_UID 가 설정되지 않았다는 경고가 표시될 수 있지만 무시해도 됩니다.

아래 내용이 포함된 .env 파일을 docker-compose.yaml 과 같은 폴더에 수동으로 생성하여 경고를 제거할 수 있습니다.

AIRFLOW_UID=50000

 

AIRFLOW_UID 의 값은 기본적으로 50000 이 들어갑니다.

 

지금까지 실행한 명령어 결과

 

 

데이터베이스 초기화 (Initialize the database)

모든 운영체제에서 데이터베이스 마이그레이션을 실행하고 첫 번째 사용자 계정을 만들어야 합니다.

docker compose up airflow-init

 

초기화가 완료되면 다음과 같은 메시지가 표시됩니다.

airflow-init_1 | Upgrades done
airflow-init_1 | Admin user airflow created
airflow-init_1 | 2.9.1
start_airflow-init_1 exited with code 0

 

이후 생성된 계정 아이디 : airflow , 비밀번호 : airflow 가 만들어집니다.

 

 

4. Airflow 시작 (Running Airflow)

이제 아래 명령어로 Airflow를 시작합니다.

docker compose up

 

`docker ps` 명령어로 모든 프로세스가 동작하는지 확인합니다.

브라우저에서 `http://localhost:8080/` 으로 접근하여 로그인페이지로 이동하는지 확인합니다.

그리고 생성된 계정으로 로그인합니다.

 

docker ps
Airflow 로그인페이지
airflow 접속

 

 

Airflow 컨테이너로 로그인하는 방법

1. `docker ps` 실행하여 airflow-scheduler-1 의 CONTAINER ID 를 추출한다. 아래 이미지에서는 80d7a9eb7b56 이다.

docker ps

2. Container ID ("80d7a9eb7b56")로 `docker exec -it 80d7a9eb7b56 sh` 를 실행하면 쉘 모드로 들어갈 수 있고, 거기서 airflow 명령어를 실행할 수 있다.

airflow 컨테이너 접속

3. root 계정으로 로그인하려면 `docker exec -u 0 -it  80d7a9eb7b56 sh` 를 실행한다.

 


https://github.com/Sangyong-Jeon/practice_airflow/wiki/Airflow-%EC%84%A4%EC%B9%98-%E2%80%90-Docker