'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

Data/Airflow

Airflow) Base image에 라이브러리 추가하기

MightyTedKim 2023. 4. 23. 12:49
728x90
반응형

Airflow에 여러 operator들이 있는데,

python Operator에서도 특정 라이브러리들이 필요할 때가 있어요

 

예상 독자는 다음과 같아요.

1. K8S Airflow에서 추가 패키지들을 어떻게 관리하는지 궁금한 분

2. dependency 최소로 db connection을 맺고 싶으신 분


저 같은 경우, 3가지를 추가해요

1. 디버깅을 위한 apt install

 - 디버깅의 경우 pod 안에서 curl, vim, tcpdump 등이 필요해서 root로 설치를 해줫어요

 

2. jdbc connection을 위한 jar

- dependency 관리 측면에서 득이되기 때문에, 추가해주고 있어요.

 

3. pip install

- 마지막으로는 jdbc 사용에 필요한 jaydebeapi, pymysql 

- s3fs, toml 같이 jupyterhub 환경에서 제공하는 pip 환경 

그래서 아래처럼 나와요. gitlab-runner를 빌드해서, 사내 repository에 push하고 있습니다.

FROM apache/airflow:2.3.0

LABEL comment "apt-get,pip,jdbc add"

#root
USER root
##apt-get
RUN https_proxy=http://192.219.61.252:8080 http_proxy=http://192.219.61.252:8080 apt-get update && \
    https_proxy=http://192.219.61.252:8080 http_proxy=http://192.219.61.252:8080 apt-get install -y \
                 tree curl vim net-tools tcpdump openjdk-11-jre --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
RUN export JAVA_HOME

##jdbc
ADD https://github.com/timveil/hive-jdbc-uber-jar/releases/download/v1.0-2.2/hive-jdbc-uber-1.0.jar /opt/airflow/jdbc/uber/hive-jdbc-uber-1.0.jar
ADD https://jdbc.postgresql.org/download/postgresql-42.2.23.jar /opt/airflow/jdbc/postgresql/postgresql-42.2.23.jar
ADD https://repo1.maven.org/maven2/io/trino/trino-jdbc/410/trino-jdbc-410.jar /opt/airflow/jdbc/trino/trino-jdbc-410.jar

RUN chmod 755 /opt/airflow/jdbc/uber/hive-jdbc-uber-1.0.jar
RUN chmod 755 /opt/airflow/jdbc/postgresql/postgresql-42.2.23.jar
RUN chmod 755 /opt/airflow/jdbc/trino/trino-jdbc-410.jar

#airflow
USER airflow
##pip
RUN https_proxy=http://192.219.61.252:8080 http_proxy=http://192.219.61.252:8080 pip --trusted-host pypi.org --trusted-host files.pythonhosted.org install --no-cache-dir \
    toml jaydebeapi xmltodict pymysql s3fs

 

정답은 없겠지만, 저는 이 방법이 가장 편하더라고요 ㅎ

 

728x90
반응형