[취미개발] - 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
'취미개발' 카테고리의 다른 글
Windows OpenSSH Server 설치 및 설정 (0) | 2023.03.17 |
---|---|
Python Selenium 시작하기 (webdriver 설치하기) (0) | 2020.04.20 |
Python 웹 크롤링 시작하기: 스타벅스 메뉴 정보 크롤링 (0) | 2020.04.19 |
AirFlow 환경 만들기(1) - Postgres 설치하기(feat. docker) (0) | 2020.02.21 |