도커에서 Airflow 시작하기

문해피·2023년 5월 27일
0

airflow

목록 보기
3/5

처음 로컬 컴퓨터에서 Airflow를 할때 환경의 일관성 부족이라던지, 로컬환경과의 충돌등의 문제로 도커에서 하게된다면 이러한 문제들을 해결할수 있지 않을까 라는 생각을 했습니다.

🐳 도커파일 만들기

  • mkdir ~/air_05 && cd ~/air_05
    위의 명령을 통해서 제일먼저 도커파일을 만들장소와 dags와 data폴더를 공유할곳을 마련합니다.

  • 도커파일 만들기

FROM apache/airflow:2.6.1
USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
     	vim \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
USER "${AIRFLOW_UID:-50000}:0"

FROM apache/airflow:2.6.1 : 기본 이미지의 명과 버전을 명시

USER root : 이 Dockerfile에서 실행할 모든 후속 명령을 root사용자로 실행

RUN

  • 패키지 목록을 업데이트
  • 패키지의 추천의존성을 설치하지 않으므로 이미지의 크기 최소화하고 vim설치
  • 불필요한 패키지를 제거하고 시스템을 정리(더 이상 필요하지 않은 패키지나 캐시파일을 제거)
  • 이미지 크기를 줄이기 위해 설치된 패키지의 메타데이터가 있는 경로의 파일을 삭제(이미지 생성할때만 지워지고 컨테이너가 실행되고 하면 다시 경로에 생성된다)

USER : 이전까지 root사용자로 실행했던 작업을 종료하고, 50000UID로 실행하도록 설정
-> USER의 명령을 통해서 이미지에서 사용되는 파일 및 배포할 애플리케이션에 대한 보안 및 접근제어를 강화


🐳이미지 빌드하기

이제 위에서 만들었어 Dockerfile을 통해서 이미지를 빌드할 차례입니다.

  • docker build -t airflow_05 ./
    위의 명령어를 치기전에 터미널에서 air_05라는 폴더로 이동한뒤 그 폴더 안에 Dockerfile을 통해서
    airflow_05라는 이미지를 만들겠다는 의미입니다.

🐳컨테이너 생성하기

컨테이너를 생성하기전에 터미널에서 id를 치면 UID와 GID 나오게 되는데 알아두어야 합니다.

docker run -d -p 8080:8080 -v ~/air0525/dags/:/opt/airflow/dags/ -v ~/air0525/data/:/home/airflow/data --entrypoint=/bin/bash --name airflow airflow_05 -c '(airflow db init && airflow users create --username admin --password admin --firstname Anonymous --lastname Admin --role Admin --email test@test.com); airflow webserver & airflow scheduler'

위의 명령을 해석해보자면

  • -d : 백그라운드 실행
  • -p : 포트설정
  • 첫번째 -v : 볼륨이라는 기능을 통해서 로컬에서의 dags파일과 컨테이너안의 airflow의 dags파일을 공유
  • 두번째 -v : dags폴더안의 스크립트를 통해서 얻어진 데이터를 data폴더에 저장할 계획이기 때문에 로컬의 data폴더와 컨테이너안의 airflow/data폴더를 공유
  • --entrypoint : 컨테이너가 실행될 때 호출되는 기본 명령을 /bin/bash로 변경
  • 이름은 airflow 이미지는 airflow_05를 사용
  • -c : airflow db를 초기화하고 사용자 생성 후 webserver와 scheduler를 백그라운드에서 실행

웹UI 접속

이제 아까 정했던 컨테이너의 포트와 IP를 같이 쓰게되면
-> 0.0.0.0:8080

이제 airflow컨테이너 환경에서 알라딘API를 통해서 데이터를 가져오고 저장하는것 까지 해보겠습니다.

profile
행복하려고 개발공부하는 문광식의 로그파일입니다.

0개의 댓글