Docker无法找到满足要求的版本 mysqlclient == 2.0.3

mat*_*ika 3 python mysql pip docker

命令出错,退出状态为 1: python setup.py Egg_info 检查日志以获取完整的命令输出。

#10 3.069 ERROR: Could not find a version that satisfies the requirement mysqlclient==2.0.3
Run Code Online (Sandbox Code Playgroud)

当尝试运行 docker build --tag python-docker 时。

Docker 文件:

# syntax=docker/dockerfile:1

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt requirements.txt 
RUN pip install -r requirements.txt

COPY . .

CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

要求.txt:

click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
mysql==0.0.2
mysql-connector==2.2.9
mysqlclient==2.0.3
Werkzeug==1.0.1
Run Code Online (Sandbox Code Playgroud)

vst*_*stm 7

根据mysqlclient 的文档,您需要default-libmysqlclient-dev在系统上安装一个编译器,因此如果您在运行 pip install 之前安装它,它应该可以工作(我测试了它,但当然没有您的应用程序代码)

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt requirements.txt 
# Install required library libmysqlclient (and build-essential for building mysqlclient python extension)
RUN set -eux && \
    export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y default-libmysqlclient-dev build-essential && \
    rm -rf /var/lib/apt/lists/*

RUN pip install -r requirements.txt

COPY . .

CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

您还可以将 pip 安装添加到第一次运行(使用&& \),以便整个设置保留在一个映像层中。