【问题标题】:Error while adding a Dockerfile to install more dependencies添加 Dockerfile 以安装更多依赖项时出错
【发布时间】:2020-06-19 13:04:40
【问题描述】:

我正在使用这个 https://github.com/tuanavu/airflow-tutorial git repo,在 docker 容器中运行气流,但我想同时安装其他要求。

我正在尝试安装 git 和一些其他依赖项,为此我在气流教程目录中创建了 Dockerfile。并在文件中添加以下行。

RUN apt-get update && \
    apt-get install -y git

RUN pip install dataclasses

然后尝试使用docker-compose up --build 构建它

但它一直失败并且错误是

   ModuleNotFoundError: No module named 'dataclasses'

没有我的 Dockerfile 也能正常工作,谁能帮我解决这个问题?

Docker-compose.yml 文件

version: '3'
services:
  postgres:
    image: postgres:12.3
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    ports:
      - "5433:5432"

  webserver:
    image: puckel/docker-airflow:1.10.1
    build:
      context: https://github.com/puckel/docker-airflow.git#1.10.1
      dockerfile: Dockerfile
      args:
        AIRFLOW_DEPS: gcp_api,s3
        PYTHON_DEPS: sqlalchemy==1.2.0
    restart: always
    depends_on:
      - postgres
    environment:
      - LOAD_EX=n
      - EXECUTOR=Local
      - FERNET_KEY=jsDPRErfv8Z_eVTnGfF8ywd19j4pyqE3NpdUBA_oRTo=
      - SSH_AUTH_SOCK=/ssh-agent
    volumes:
      - /home/awaish/work/airflow/dags1:/usr/local/airflow/dags
      - /usr/bin/ssh-agent:/ssh-agent
      # Uncomment to include custom plugins
      # - ./plugins:/usr/local/airflow/plugins
    ports:
      - "8080:8080"
    command: webserver
    healthcheck:
      test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 3

和 Dockerfile

#WORKDIR /usr/src/app
FROM python3.7   
RUN apt-get update && \
    apt-get install -y git
RUN pip3 install dataclasses
RUN pip3 install git+ssh://git@bitbucket.org/myspace/utilities.git@master

【问题讨论】:

    标签: python-3.x docker airflow


    【解决方案1】:

    如果您可以从错误文本中提供更多信息,那将会很有帮助。

    dataclasses 是 pypi 提供的一个包,所以所有被认为应该通过的东西。 pip 回退到错误提示它找不到数据类可能是 pip 无法访问 pypi 或等效的 repo。

    我的想法是,这可能是 docker 在构建映像时无法联系 pypi 的下游。

    同样,如果您想提供更多错误文本,有人可以提供帮助。

    【讨论】:

    • 可能要添加的最佳细节是来自控制台的更多错误文本。单行 ModuleNotFoundError: No module named 'dataclasses',可能没有人们可以用来提供帮助的所有信息。
    【解决方案2】:

    请分享完整的 Dockerfile。如果这是完整的文件,那么您需要在 Dockerfile 中添加更多信息。阅读this 答案以获得完整的理解。

    【讨论】:

    • 我分享了一个链接,它创建了一个有很多要求的图像,但我需要添加额外的安装要求,所以在同一目录中添加了这个 Dockerfile。但它不工作
    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多