본문 바로가기

Data Mining & Distributed/Airflow

[ Airflow ] Docker - Airflow docker에서 설치하고 실행하기

반응형

Airflow를 Docker를 이용해 설치하는 전체 과정을 정리하고 각 단계별로 설명을 붙인 내용은 다음과 같습니다.


🔧 전체 개요

Docker 컨테이너(Ubuntu 기반) 안에 Python, PostgreSQL, Airflow를 직접 설치해서 구성하는 방법입니다. 각 구성요소는 수동으로 설치되며, Airflow는 PostgreSQL DB를 백엔드로 사용합니다.


1. Docker 컨테이너 생성 및 기본 설정

docker run -itd --name=op2 ubuntu:22.04 bash
docker exec -it op2 bash
  • 설명: Ubuntu 22.04 기반 컨테이너 op2를 실행하고 셸에 진입합니다.

apt 업데이트

apt update
apt upgrade
  • 설명: 패키지 인덱스를 최신으로 유지하고 업그레이드합니다.

2. Pyenv를 이용한 Python 설치

필수 라이브러리 설치

apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
python3-openssl git
  • 설명: Python 빌드에 필요한 종속 라이브러리를 설치합니다.

pyenv 설치

curl https://pyenv.run | bash

pyenv 환경 설정

echo -e 'export PATH="$HOME/.pyenv/bin:$PATH"\n' \
'eval "$(pyenv init --path)"\n' \
'eval "$(pyenv init -)"\n' \
'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

Python 설치 및 설정

pyenv install 3.8.0
pyenv global 3.8.0
pyenv versions
  • 설명: Airflow는 Python 3.8과 잘 호환되므로 해당 버전을 사용합니다.

3. PostgreSQL 설치 및 설정

설치 및 실행

apt install -y postgresql postgresql-contrib
service postgresql start
service postgresql status
  • 설명: PostgreSQL 서버를 설치하고 실행 상태를 확인합니다.

DB 및 사용자 생성

sudo -u postgres psql
CREATE DATABASE airflow;
CREATE USER airflow_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE airflow TO airflow_user;
\q
  • 설명: Airflow 전용 데이터베이스와 사용자 계정을 생성합니다.

4. Airflow 설치 및 설정

가상환경 생성 및 pip 업그레이드

python -m venv airflowenv
source airflowenv/bin/activate
pip install --upgrade pip

Airflow 설치

pip install apache-airflow[postgres]==2.9.0
  • 설명: PostgreSQL을 backend로 사용하는 Airflow를 설치합니다.

Airflow 파일 생성

airflow info

Airflow 설정

vim ~/airflow/airflow.cfg

필요한 항목 수정:

executor = LocalExecutor
sql_alchemy_conn = postgresql+psycopg2://airflow_user:your_password@localhost/airflow

DB 초기화

airflow db init

관리자 사용자 생성

airflow users create \
--username admin \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com

웹서버 및 스케줄러 실행

service postgresql start # systemctl start postgresql
airflow webserver -p 8080 -D # -D : daemon으로 실행
airflow scheduler -D # -D : daemon으로 실행

5. 네트워크 및 재시작 고려

  • Docker 환경에서 포트포워딩이 되어 있어야 브라우저에서 Airflow UI 접근 가능 (localhost:8080)
  • PostgreSQL과 Airflow 서비스가 컨테이너 내부에서 정상 실행 중이어야 하며, 필요 시 재시작
  • 데이터 손실 방지를 위해 Docker Volume 또는 외부 마운트를 고려해야 함

6. 요약

단계 설명

Docker 환경 준비 Ubuntu 22.04 컨테이너 생성
Python 환경 구성 pyenv로 Python 3.8 설치
PostgreSQL 구성 DB/유저 생성 및 서비스 실행
Airflow 설치 pip로 airflow[postgres] 설치
서비스 실행 webserver와 scheduler 실행
네트워크 포트 개방 및 재시작 시 주의

 

반응형