【问题标题】:Broken DAG: [/usr/local/airflow/dags/test.py] No module named 'boto3'. How to pip install into airflow container?损坏的 DAG:[/usr/local/airflow/dags/test.py] 没有名为“boto3”的模块。如何将 pip 安装到气流容器中?
【发布时间】:2020-07-09 14:31:58
【问题描述】:

我有以下层次结构:

-airflow
  -dags
    -test.py
  -deployment
    -dockerfile
    -docker compose
  -scripts
  -requirements.txt

test.py 文件使用来自scripts 目录的函数。一些脚本有外部导入语句,如import boto3。我认为这就是问题所在,因为当我运行气流网络服务器时,我可以看到所有不需要这些外部包的 DAG 都已加载,但确实需要它们的 DAG 无法加载:
@ 987654325@
docker compose 文件如下所示:

version: '3'
services:
  webserver:
    build: .

我尝试将这样的内容添加到我的dockerfile

FROM puckel/docker-airflow:1.10.9

WORKDIR /airflow
COPY requirements.txt /airflow
RUN pip install -U pip && pip install -r requirements.txt

但似乎没有安装这些软件包。每当我启动网络服务器(docker compose up)时,如何安装我的requirements.txt

【问题讨论】:

    标签: docker docker-compose dockerfile airflow


    【解决方案1】:

    可以像...一样简单

    WORKDIR /airflow
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    

    您可能还需要指导 Docker 构建步骤。我认为 docker-compose build .docker-compose up --no-cache... 但这是基于松散的记忆

    【讨论】:

    • 感谢@Mike Taylor 的帮助。我将我的 Makefile 更改为运行 docker-compose --build -d airflow 并且有效。但是现在它无法识别requirements.txt 文件。至少我现在可以让 pip 安装要求。关于如何让requirements.txt 工作的任何其他帮助都会很棒!
    • 不用担心,我无法告诉你 requirements.txt 是如何失败的,鉴于我所掌握的信息......这是我与 Docker 协调的上一个项目的 sn-p 和requirements ADD ./requirements.txt ./requirements.txt RUN pip3 install --no-cache -r requirements.txt 但这已经很老了,所以.....也许你需要明确地将 requirements.txt 复制到 /airflow/ requirements.txt
    • 很抱歉,在 cmets 中没有有趣的样式
    • 哈哈不用担心造型!我让它与requirements.txt 文件一起工作。我划伤了depoyment 目录并将所有 docker 的东西和 makefile 放在根目录中,使其能够读取文件。据我了解,因为 docker 试图从部署文件夹构建映像,requirements 文件不在其上下文中。感谢您的帮助!
    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 2022-01-18
    • 2016-01-06
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2015-05-06
    • 2023-01-02
    相关资源
    最近更新 更多