앞서, 기존에 생성된 이미지만을 이용해서 airflow 를 빌드했었는데, 오늘은 airflow 이미지 자체를 직접 빌드해보도록 하겠다.
왜 직접 빌드해야 하는지에 대한 이유와 공식 문서 소개, 그리고 airflow2 image 빌드 과정을 포스팅하겠다.
목차
airflow2 커스텀 이미지 빌드의 필요성
airflow2 이미지 빌드
공식 문서
01. airflow2 커스텀 이미지 빌드의 필요성
여담이지만 회사 면접을 봤을 당시, airflow를 도커로 띄워서 작은 프로젝트를 운영해 본 경험이 있다고 말씀드렸다.
이때 사수님께서 이미지 빌드 과정에 대해서 상세히 여쭤보았던 기억이 나는데, 이때 나는 이미 빌드되어져 있는 이미지를 활용해서 운영했었다라고 대답했던 기억이 난다. 그래서, 기회가 된다면 이미지부터 직접 빌드해서 환경을 구축해보고 싶다는 생각을 줄곧 해왔었다.
airflow 의 커스텀 이미지 필요성 대표 2가지는 아래와 같다.
첫 번째, 필요한 이미지의 기능만 구현할 수 있다.
Apache Airflow 에서는 공식 Docker 이미지를 제공한다. 이 이미지에는 60개 이상의 추가 기능이 설치되어 있다고 한다. 그런데, 우리는 사실 이 모든 기능이 필요치 않다.
두 번째, 내가 필요한 추가 기능을 원활하게 추가할 수 있다.
앞서, 공식 이미지에는 60개 이상의 추가 기능이 설치되어 있다고 설명한 바 있다. 하지만 우리는, 이 60여 개 이상의 기능 외에도 추가로 필요한 기능이 있을 수 있다. 그러면 우리는 또 직접 추가해야 하는데, 그러면 특정 요구사항이 있는 다른 이미지가 필요하게 된다.
따라서 우리는 도커 이미지를 직접 구현하는 것이, 원하는 특정 기능만 추가하여 이미지를 빌드 및 배포 / 운영할 수 있는 좋은 방법이 될 것이다.
공식 문서 설명은 아래와 같다.
02. airflow2 이미지 빌드
이제 이미지를 직접 빌드해보자.
우선 airflow 환경을 구축할 폴더를 생성해준다. 나는 airflow_test 라는 폴더를 만들어주었다.
mkdir airflow_test
이제 그 airflow_test 폴더에, dag 파일을 담아 줄 dags 폴더도 생성해준다.
cd airflow_test
mkdir dags
그리고, airflow_test 폴더에 requirements.txt를 생성하여, airflow 내부에 설치해 줄 install 목록을 만들어준다.
우선은 빈 칸으로 생성해준다.
vi requirements.txt
아니면 만약 내가 설치한 목록들을 airflow에 넣고 싶다면, 아래와 같이 txt 파일을 생성해준다.
pip freeze > requirements.txt
airflow_test 에 Dockerfile 파일을 생성해준다.
vi Dockerfile
이제 해당 폴더에 담길 이미지를 작성해주자. 이때 나는 공식 문서를 참고하여 이미지를 구축했다.
도커 파일을 쪼개어 설명하도록 하겠다.
2-1. 기반이 되는 이미지를 가져오기 & maintainer 라벨 달기
FROM apache/airflow:2.2.4-python3.8
USER root
LABEL maintainer="hansohee"
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/*
2-3. airflow user 변경
USER airflow
2-4. dag 파일 복사
COPY ./dags /opt/airflow/dags
2-5. requirement 복사 및 설치
COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
이로써, 기본적인 airlfow2 커스텀 이미지가 완성됐다.
이제 아래 도커 빌드 명령어를 주어 도커 이미지를 빌드한다. 참고로, 해당 이미지 빌드 시 꽤나 많은 시간이 소요된다.
docker build --no-cache -t hansohee/test_airflow:0.0.1 .
해당 명령어의 옵션 설명은 아래와 같다.
- --no-cache: 캐시 없이 이미지를 빌드하라는 의미
- -t : 이미지 tag 설정. 따라서 해당 명령어는 컨테이너명 hansohee & 이미지명 test_airflow & 태그 0.0.1 로 설정한다는 의미
빌드가 정상적으로 완료가 되면, 아래와 같이 설치 리스트가 파란색으로 보이며 export 된다 !
03. 공식 문서
공식 문서 링크는 아래와 같다.
https://airflow.apache.org/docs/docker-stack/build.html
이로써 가장 기본적인 틀의 airflow2 이미지 빌드가 마무리되었다.
다음 포스팅들에서는 해당 이미지를 docker-compose 를 활용하여 run 해보는 것을 진행해보도록 하겠다.
'데이터 공부 > Apache Airflow' 카테고리의 다른 글
Airflow Helm 배포 - 설치하기 (0) | 2022.10.22 |
---|---|
Airflow Helm 배포 - Helm 과 Chart 를 알아보기 (0) | 2022.10.22 |
Apache Airflow 처음부터 빌드해보기 + 4 (0) | 2021.09.24 |
Apache Airflow 처음부터 빌드해보기+2 (0) | 2021.09.23 |
Apache Airflow 처음부터 빌드해보기 + 1 (0) | 2021.08.16 |