Python 需要新图书馆
我目前正在使用docker compose up运行我从docker获得的apache airflow映像。 但是,当我尝试运行pythonOperator(包含附加库的python脚本)时,在构建数据库时会出现错误 My docker-compose.yml: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
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映像-