Docker & Kubernetes

도커 이미지 빌드하기 (Apache Airflow)

떡쇠 2024. 11. 3. 21:26
반응형

이 글에서는 Python 3.8을 사용하는 Apache Airflow 2.8.1의 커스텀 도커 이미지를 빌드하는 방법을 알아본다.


 

1. Dockerfile 생성

# 파이썬 3.8을 사용하는 에어플로우 이미지를 기반 이미지로 설정
FROM apache/airflow:2.8.1-python3.8



# 필요한 패키지 설치 
USER root # (root 권한으로 전환)
RUN apt-get update && \
    apt-get install -y openjdk-17-jdk && \
    apt-get clean \
    apt-get vim

USER airflow # (airflow 사용자 권한으로 전환)

RUN pip install --no-cache-dir \
        airflow-code-editor \
        JayDeBeApi==1.2.3 \
        kafka-python==2.0.2 \
        JPype1==1.5.0 \
        cryptography==42.0.5 \
        requests==2.31.0 \
        flower \
        zeep \
        DBUtils

# airflow 사용자가 특정 디렉토리의 소유권을 갖도록 설정
USER root (root 권한으로 전환)
RUN chown -R 50000:0 /opt/airflow

# airflow 사용자로 전환
USER airflow 
~
  • 기반 이미지: apache/airflow:2.8.1-python3.8 이미지를 사용하여 Airflow 2.8.1과 Python 3.8 환경을 설정한다. (기반 이미지가 로컬 도커 이미지 저장소에 없는 경우 도커 허브에서 이미지를 설치 후 빌드한다.)
  • 필요한 패키지와 라이브러리를 설치 명령어를 작성한다. (필요 시 사용자 권한을 전환시키는 명령어도 추가)

 

2. 도커 이미지 빌드

# . 으로 현재 디렉토리 지정
docker build -t custom-airflow:2.8.1-python3.8 .

# git의 url도 사용이 가능하다.
docker build -t custom-airflow:2.8.1-python3.8 https://github.com/yourusername/yourrepository.git
  • docker build: 이미지를 빌드하는 명령어
  • -t custom-airflow:2.8.1-python3.8: 이미지에 이름(custom-airflow)과 태그(2.8.1-python3.8)를 지정한다. ( -t는 tag으  약자로 콜론 뒤에 2.8.1-python3.8을 태그로 지정하는 옵션이다.
  • .: 현재 디렉토리를 빌드 컨텍스트로 지정한다. 외부의 git 주소나 특정 디렉토리로 지정이 가능하다. Docker가 Dockerfile과 이미지 빌드에 필요한 파일들을 찾는 위치이다. 이를 생략하면 Docker는 빌드를 진행할 수 없다.

 

 

3. 빌드된 이미지 확인

docker images

 

도커 이미지가 빌드된 후 docker images로 확인 결과 아래 사진처럼 ahache/airflow 라는 이름의 2.8.1-python3.8 태그를 가진 에어플로우 이미지가 새로 생성이 된 것을 확인할 수 있다.

 

 

4. docker-compose.yaml 파일의 이미지 이름을 직접 생성한 이미지로 수정 후 컨테이너 생성

 

아래 사진처럼 docker-compose.yaml 파일에 지정한 이미지를 새로 빌드한 이미지로 수정한다.

 

 

컨테이너 생성을 하면 아래 사진처럼 사용된 이미지가 새로 빌드한 이미지인 것을 확인할 수 있다.

반응형