본문 바로가기

취미개발

AirFlow 환경 만들기(2) - Airflow 설치하기(feat. docker)

반응형

 

[취미개발] - AirFlow 환경 만들기(1) - Postgres 설치하기(feat. docker)


이번엔 airflow를 띄울 container를 만들어 보겠습니다.

  • 설치 준비
  • Ubuntu18.04 컨테이너 생성
  • Miniconda-Linux 및 airflow 설치
  • airflow 세팅

 

설치 준비

Windows상에 Docker에서 사용할 공유 폴더를 생성합니다.
저는 "C:\Docker" 경로로 생성하겠습니다.

docker가 실행중이라면 windows 오른쪽 아래 트레이창에서 docker를 클릭후 Settings로 진입합니다.

Docker Settings중에서 Resources > FILE SHARING에서 위에서 생성한 공유폴더의 드라이브를 체크해줍니다.
(만약 D:아래에 공유폴더를 생성하였다면 D를 체크해줍시다)

 

Miniconda Linux installer를 다운받아서 앞서 생성한 공유폴더에 넣어줍니다. (Anaconda를 설치해도 무방합니다)
https://docs.conda.io/en/latest/miniconda.html

불러오는 중입니다...

 

Ubuntu18.04 컨테이너 생성

docker로 airflow를 실행할 ubuntu 이미지를 받고,

$ docker pull ubuntu:18.04

컨테이너를 생성할때 port와 공유폴더를 맵핑해줍니다.

  • [-p 8090:8080] : host의 8090에 container의 8080 port를  맵핑합니다.
  • [-v /c/Docker:/shared] : host의 /c/Docker 폴더를 container의 /shared 폴더에 마운트합니다.
$ docker run -it -d -p 8090:8080 -v /c/Docker:/shared -e LC_ALL=C.UTF-8 --name airflow ubuntu:18.04

실행한 컨테이너의 bash로 접근합니다.

$ docker exec -it airflow bash

공유 폴더로 가서 Miniconda를 설치해줍시다.

# cd shared
# sh Miniconda3-latest-Linux-x86_64.sh

Conda설치가 완료되었으면 세션을 다시켜줍시다.

# exit
$ docker exec -it airflow bash

설치전에 apt-get을 최신으로 업데이트하고 gcc를 설치해야 합니다. vim도 설치해줍시다.

# apt-get update
# apt-get install gcc
# apt-get install vim
# conda update --all

이제 conda를 최신으로 업데이트하고 airflow를 설치해줍시다.

# conda update --all -y
# conda install -y airflow

현재 버전에서는 다음과 같은 에러가 발생합니다.
    > ImportError: cannot import name 'url_encode' from 'werkzeug')
werkzerg가 1.0 버전으로 올라가면서 url_encode함수가 변경되었습니다.
때문에 이에 대응하는 최신 airflow로 직접 업그레이드가 필요합니다.

# pip install --upgrade apache-airflow

 

airflow 세팅

설치한 airflow는 초기세팅이 필요합니다.

이전에 만들어 놓은 공유폴더아래에 dags, logs 폴더를 만들어줍시다. (container내에서 만들어도 됩니다.)

  • c:/docker/dags
  • c:/docker/logs

기본 세팅파일을 생성을 위한 db초기화를 합니다.

# airflow initdb

 

/root/airflow/airflow.cfg 파일을 vim으로 열어 다음 설정들을 변경해줍니다.
이때 sql_alchemy_conn에 localhost를 적으면 해당 컨테이너를 찾아가지 못하기 때문에
host의 ip 혹은 postgres컨테이너의 ip를 넣어줘야합니다.

  • host의 ip는 host커맨드에서 ipconfig로 확인할수 있습니다.
  • postgres 컨테이너의 ip는 $docker inspect postgres 를 통해 확인할 수 있습니다.
# dags_folder = /root/airflow/dags
dags_folder = /shared/dags

# base_log_folder = /root/airflow/logs
base_log_folder = /shared/logs

# default_timezone = utc
default_timezone = Asia/Seoul

# executor = SequentialExecutor
executor = LocalExecutor

# sql_alchemy_conn = sqlite:////root/airflow/airflow.db
sql_alchemy_conn = postgresql+psycopg2://timmy:0000@172.17.0.2/airflow

세팅 수정 후 다시 airflow db를 초기화 합니다.

# airflow initdb

 

이제 기본 세팅이 완료되었습니다.

웹서버를 켜보겠습니다.

# airflow webserver -p 8080

 

반응형