Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要新图书馆_Python_Docker_Docker Compose - Fatal编程技术网

Python 需要新图书馆

Python 需要新图书馆,python,docker,docker-compose,Python,Docker,Docker Compose,我目前正在使用docker compose up运行我从docker获得的apache airflow映像。 但是,当我尝试运行pythonOperator(包含附加库的python脚本)时,在构建数据库时会出现错误 My docker-compose.yml: version: '3' services: postgres: image: postgres:9.6 environment: - POSTGRES_USER=airflow - POST

我目前正在使用docker compose up运行我从docker获得的apache airflow映像。 但是,当我尝试运行pythonOperator(包含附加库的python脚本)时,在构建数据库时会出现错误

My docker-compose.yml:

version: '3'
services:
  postgres:
    image: postgres:9.6
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    ports:
      - "5432: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
        PYTHON_DEPS: sqlalchemy==1.2.0
    restart: always
    depends_on:
      - postgres
    environment:
      - LOAD_EX=n
      - EXECUTOR=Local
      - FERNET_KEY=jsDPRErfv8Z_eVTnGfF8ywd19j4pyqE3NpdUBA_oRTo=
    volumes:
      - /dags:/usr/local/airflow/dags # My dags files
      - /src:/usr/local/airflow/src # my src files and its the one that contain the new libraries
      # Uncomment to include custom plugins
      # - ./plugins:/usr/local/airflow/plugins
    ports:
      - "8085:8080"
    command: webserver
    healthcheck:
      test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 3
运行docker时使用的命令:

docker-compose up -d
我收到的错误消息


谁能告诉我如何修复这个错误?当我想添加更多Python操作员时,如何安装新软件包?

您可以在docker中安装所需的库,这是一个快速解决方案:

以root用户身份访问airflow worker的容器id

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                 PORTS                                        NAMES
c73425b30981        puckel/docker-airflow:1.10.9   "/entrypoint.sh work…"   7 hours ago         Up 7 hours             5555/tcp, 8080/tcp, 8793/tcp                 airflow_worker_1
docker exec-it--user root c73/bin/bash

运行apt获取更新
root@c73425b30981:/usr/local/afflow#apt获取更新

然后安装python库
root@c73425b30981:/usr/local/afflow#pip install Janome


那么你就可以使用janome library了

有人能帮我吗?所以一个DAG因为丢失了一个包而坏了,对吗?如果docker映像的创建者无法修复此问题,则您也可以基于此映像的docker文件创建自己的映像。您应该能够以这种方式安装新的软件包,包括您需要的软件包。如果提供了dockerfile,请更改该dockerfile,或者在您自己的dockerfile中使用它们的映像作为基础(FROM语句)。我如何构建它?实际上,我是通过这个链接来学习教程的:既然你学习了教程,我建议你首先联系一下这个图片的创建者(puckel/docker airflow:1.10.1)并写一份错误报告。如果创建者无法或不愿意修复它,请遵循有关创建docker图像的教程。您将创建一个Dockerfile并将其基于其他一些图像。如果您基于此映像,则可以选择在创建时安装自定义软件包,该软件包将在从此映像创建的所有实例中保持不变。此外,由于教程提到了此特定版本(1.10.1),但存储库已在1.10.9版上,因此值得先尝试最新版本。先生,为什么每次都是我先下船,然后码头工人再上船。我需要重做一遍这些步骤吗?我从这里开始学习教程。这个答案是对你的问题的一个快速而肮脏的回答。在实例而不是映像上安装软件包是一种不好的做法。这也是每次取下容器时必须重复这些步骤的原因。实例中的变化永远不会持久。事实上,这不是一个好的实践,但可以解决您所面临的问题。要永久修复此问题,您可以创建自己的docker映像,并使用所需的库编辑yml文件-尝试使用此链接创建docker映像-