如何通过 docker-compose 文件安装额外的 pip 包airflow https://airflow.apache.org/docs/apache-airflow/2.0.1/docker-compose.yaml?
我假设应该有一个标准功能来选择requirements.txt
或者其他的东西。当检查他们的repo https://github.com/apache/airflow/blob/master/IMAGES.rst#airflow-docker-images,我确实看到了一些 ENV 变量,例如ADDITIONAL_PYTHON_DEPS
这暗示我这应该是可能的,但是在 docker-compose 文件中设置这些实际上并没有安装库。
version: '3'
x-airflow-common:
&airflow-common
image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.0.1}
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
ADDITIONAL_PYTHON_DEPS: python-bitvavo-api
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
- ./requirements.txt:/requirements.txt
我缺少什么?
Airflow 文档中有一个非常详细的指南,介绍如何实现您想要的目标here https://airflow.apache.org/docs/docker-stack/build.html#building-the-image。根据您的要求,这可能就像使用扩展原始图像一样简单From
创建新的 Dockerfile 时使用指令,或者您可能需要自定义映像以满足您的需求。
如果你选择扩展图像 https://airflow.apache.org/docs/docker-stack/build.html#extending-the-image你的新 Dockerfile 的方法将是这样的:
FROM apache/airflow:2.0.1
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential my-awesome-apt-dependency-to-add \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
USER airflow
RUN pip install --no-cache-dir --user my-awesome-pip-dependency-to-add
然后你可以将类似的内容添加到 docker-compose 文件中:
...
version: "3"
x-airflow-common: &airflow-common
build: . # this is optional
image: ${AIRFLOW_IMAGE_NAME:-the_name_of_your_extended_image
...
...
最后,构建您的图像并使用 compose 将所有内容重新打开。请尝试查看文档以获取详细信息或完整解释。希望这对你有用!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)