我使用的是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(。
- 我的
Dockerfile
看起来优化了吗?这里有什么需要改进的地方吗 - 在基本图像中,我看到了一些我不需要的包(如
apache-airflow-providers-google
、apache-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