优化 Apache Airflow 官方 docker 图片
Optimizing Apache Airflow official docker image
我正在使用 Apache Airflow official image。
我使用的 SparkSubmitOperator
需要同时安装 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 的 multi-stage 方法删除您不需要的所有“build-essential”内容
您可以在此处查看所有详细信息和大量示例:
https://airflow.apache.org/docs/docker-stack/build.html#customizing-the-image
你也可以看看我在2020年Airflow Summit上关于Airflow Image的演讲(细节改变了,但Airflow Image背后的方法保持不变):https://youtu.be/wDr3Y7q2XoI
我正在使用 Apache Airflow official image。
我使用的 SparkSubmitOperator
需要同时安装 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 的 multi-stage 方法删除您不需要的所有“build-essential”内容
您可以在此处查看所有详细信息和大量示例: https://airflow.apache.org/docs/docker-stack/build.html#customizing-the-image
你也可以看看我在2020年Airflow Summit上关于Airflow Image的演讲(细节改变了,但Airflow Image背后的方法保持不变):https://youtu.be/wDr3Y7q2XoI