在 python alpine docker 中安装 python numpy 模块

Installing python numpy module inside python alpine docker

我正在尝试对我的 python 应用程序进行 docker 化。错误显示在构建 Dockerfile 和安装 scikit-learn 的依赖项中,即。 numpy.

Docker 文件

FROM python:alpine3.8

RUN apk update
RUN apk --no-cache add linux-headers gcc g++

COPY . /app
WORKDIR /app
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5001

ENTRYPOINT [ "python" ]
CMD [ "main.py" ]

requirements.txt

scikit-learn==0.23.2
pandas==1.1.3
Flask==1.1.2

ERROR: Could not find a version that satisfies the requirement setuptools (from versions: none) ERROR: No matching distribution found for setuptools

Full Error

同意@senderle 的评论,Alpine 在这里不是最佳选择,特别是如果您打算使用依赖于 numpy 的科学 Python 包。如果你绝对需要使用 Alpine,你应该看看其他问题,比如 .

这里有一个建议,我也用 CMD 替换了 ENTRYPOINT 以便能够覆盖以方便调试(例如 运行 a shell).如果 ENTRYPOINTpython,则无法覆盖它,并且您将无法 运行 除了 python 命令之外的任何其他内容。

FROM python:3.8-slim

COPY . /app
WORKDIR /app
RUN pip install --quiet --no-cache-dir -r requirements.txt
EXPOSE 5001

CMD ["python", "main.py"]

构建,运行,调试。

# build
$ docker build --rm -t my-app .

# run
docker run -it --rm my-app

# This is a test

# debug
$ docker run -it --rm my-app pip list

# Package         Version
# --------------- -------
# click           7.1.2
# Flask           1.1.2
# itsdangerous    1.1.0
# Jinja2          2.11.2
# joblib          0.17.0
# MarkupSafe      1.1.1
# numpy           1.19.2
# pandas          1.1.3
# ...