linux - 错误:docker 中不可满足的约束
问题描述
我是码头工人的新手。
我有两个问题
问题 #1
我创建了这个安装Apache-Airflow和Apache-Celery的基本 docker 文件。但现在,只想安装气流。我正面临一个奇怪的问题unsatisfiable constraints
。
我累了。我已经尝试但无法解决问题。任何帮助将不胜感激。
FROM python:3.6-alpine
WORKDIR /airflow
RUN apk add git gcc python3-dev gpgme-dev libc-dev python-devel python-setuptools mysql-devel gcc-c++
COPY airflow/requirements.txt airflow/requirements.txt
RUN pip install -r airflow/requirements.txt
COPY . /airflow
EXPOSE 8080 5555
CMD ["airflow", "initdb"]
我有我的 requirements.txt 文件,其中包含 Apache-Airflow 的依赖项。
要求.txt
pytz==2015.7
cryptography
requests
pyOpenSSL
ndg-httpsclient
pyasn1
psycopg2
celery>=4.0.0
flower>=0.7.3
Flask==1.1.1
requests==2.22.0
airflow==1.10.8
MySQL-python
flask_bcrypt
问题2
我们使用conda-library
imagecontinuumio/miniconda3
来安装依赖项。是不是很好用???
解决方案
做了一些更改,这是新的 dockerfile:
FROM python:3.6-alpine
WORKDIR /airflow
RUN apk add build-base libffi-dev musl-dev postgresql-dev mariadb-connector-c-dev
COPY requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
COPY . /airflow
EXPOSE 8080 5555
CMD ["airflow", "initdb"]
以及新的 requirements.txt:
pytz==2015.7
cryptography
pyOpenSSL
ndg-httpsclient
pyasn1
psycopg2
celery>=4.0.0
flower>=0.7.3
Flask==1.1.1
requests==2.22.0
apache-airflow==1.10.8
mysqlclient
flask_bcrypt
变更摘要:
- 您试图下载 Alpine 中不存在的软件包(它们看起来像 debian 软件包),我将其中大部分替换为
apk add build-base
libffi-dev
为cryptography
包添加- 添加
musl-dev
和postgresql-dev
用于 psycopg2 - MySQL-python 不支持 python3 所以我用
mysqlclient
- 添加
mariadb-connect-c-dev
为mysqlclient
- 其他小修复、修复复制路径、删除重复依赖项
是的,通常你最好不要使用 alpine 来构建 python 包(https://pythonspeed.com/articles/alpine-docker-python/)。如果你切换到continuumio/miniconda3
它,它会更简单一些(并且构建起来更快)。
FROM continuumio/miniconda3
WORKDIR /airflow
RUN apt-get update && apt-get install -y libpq-dev libmariadbclient-dev build-essential
COPY requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
COPY . /airflow
EXPOSE 8080 5555
CMD ["airflow", "initdb"]
推荐阅读
- python - 计算文本文件中长度≥7的所有回文子串
- android - Jetpack Compose 导航结果
- javascript - 更改嵌入组件的 prop 值
- sql - 按 ID 分组,其中同一 ID 用于多天的不同对象
- python - 无法使用 Selenium(Python)按类名找到 div
- mysql - 卸载 XAMPP 后从本地 phpMyAdmin 恢复数据库
- flutter - Flutter:应用程序终止时,flutter_local_notifications onSelectNotification 不起作用
- python - 如何在正则表达式(Python)中为变量添加单词边界
- javascript - 如何使用 jquery 在 onclick 中附加 jsx const
- python - 从存储为字符串的文件路径中获取文件名