优化Apache Airflow官方docker镜像



我使用的是Apache Airflow官方图片。

我使用的CCD_ 1同时需要Java&安装了apache-airflow-providers-apache-spark,所以我的Dockerfile看起来像:

FROM apache/airflow:2.2.3-python3.9
ENV PYTHONPATH "${PYTHONPATH}:${AIRFLOW_HOME}"
USER root
RUN apt-get update 
&& apt-get install -y --no-install-recommends 
openjdk-11-jre-headless 
&& apt-get autoremove -yqq --purge 
&& apt-get clean 
&& rm -rf /var/lib/apt/lists/*
USER airflow
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
COPY ./requirements/requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
ADD dags dags/

requirements.txt:

apache-airflow[jdbc,statsd]==2.2.3
apache-airflow-providers-apache-spark==2.1.0

将以上两者相加,图像大小显著增加(增加了一倍多——~650MB(。

  1. 我的Dockerfile看起来优化了吗?这里有什么需要改进的地方吗
  2. 在基本图像中,我看到了一些我不需要的包(如apache-airflow-providers-googleapache-airflow-providers-celery等(。为什么这些提供者是内置的?有更瘦的形象吗

您可以按照自定义图像的说明进行操作。你基本上可以使用Dockerfile或Airflow和Airflow源代码构建自己的图像,在那里你可以:

  • 只安装您需要的
  • 使用Airflow的多阶段方法去除所有";构建必要的";你不需要的东西

您可以在此处查看所有详细信息和大量示例:https://airflow.apache.org/docs/docker-stack/build.html#customizing-图像

你也可以看到我在2020年气流峰会上对Airlfow Image的演讲(细节发生了变化,但Airflow Image背后的方法保持不变(:https://youtu.be/wDr3Y7q2XoI

最新更新