如何在Airflow(docker-compose)中安装软件包?
这个问题与已有的问题非常相似。唯一的区别是我在 docker 中运行 Airflow
一步步:
- 将docker-compose.yaml放入PyCharm 项目
- 放入
requirements.txtPyCharm 项目 - 跑
docker-compose up - 运行 DAG 并收到一个
ModuleNotFoundError
我想使用 docker-compose和requirements.txt. PyCharm 解释器和 DAG 执行期间应该可以使用这些依赖项
有没有不需要重建图像的解决方案?
回答
在气流 GitHub 讨论中得到了答案。现在唯一的方法是安装额外的 python 包来构建你自己的镜像。我将尝试更详细地解释这个解决方案
步骤 1.将Dockerfile,docker-compose.yaml和requirements.txt文件放入项目目录
步骤 2.粘贴到下面的 Dockefile 代码:
FROM apache/airflow:2.1.0
COPY requirements.txt .
RUN pip install -r requirements.txt
步骤3.粘贴到docker-compose.yaml代码中,可以在官方文档中找到。将部分替换image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}为build: .:
---
version: '3'
x-airflow-common:
&airflow-common
build: .
# REPLACED # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}
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'
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
# ...
此时您的项目目录应如下所示:
airflow-project
|docker-compose.yaml
|Dockerfile
|requirements.txt
步骤 4.运行docker-compose up以启动 Airflow,docker-compose应该会自动从Dockerfile. 运行docker-compose build以重建映像并更新依赖项