如何在Airflow(docker-compose)中安装软件包?

这个问题与已有的问题非常相似。唯一的区别是我在 docker 中运行 Airflow

一步步:

  1. 将docker-compose.yaml放入PyCharm 项目
  2. 放入requirements.txtPyCharm 项目
  3. docker-compose up
  4. 运行 DAG 并收到一个 ModuleNotFoundError

我想使用 docker-compose和requirements.txt. PyCharm 解释器和 DAG 执行期间应该可以使用这些依赖项

有没有不需要重建图像的解决方案?

回答

在气流 GitHub 讨论中得到了答案。现在唯一的方法是安装额外的 python 包来构建你自己的镜像。我将尝试更详细地解释这个解决方案

步骤 1.Dockerfile,docker-compose.yamlrequirements.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以重建映像并更新依赖项


以上是如何在Airflow(docker-compose)中安装软件包?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>