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
반응형