构建 Docker 时出错:“包 'mongodb' 没有安装 csndidate”与 python:3.7 图像

Posted

技术标签:

【中文标题】构建 Docker 时出错:“包 \'mongodb\' 没有安装 csndidate”与 python:3.7 图像【英文标题】:Error while building Docker: "Package 'mongodb' has no installation csndidate" with python:3.7 image构建 Docker 时出错:“包 'mongodb' 没有安装 csndidate”与 python:3.7 图像 【发布时间】:2022-01-08 21:43:21 【问题描述】:

我正在尝试使用 docker compose 构建此 docker 映像:

FROM python:3.7-slim

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

RUN apt-get update && apt-get install -y \
    build-essential \
    make \
    gcc \
    python3-dev \
    mongodb



# Create working directory and copy all files
COPY . /app
WORKDIR /app

# Pip install requirements
RUN pip install --user -r requirements.txt

# Port to expose
EXPOSE 8000
# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "main.py", "runserver"]

但我收到此错误:

Package 'mongodb' has no installation candidate

当我使用 python:3.4-slim 运行相同的 docker 映像时,它可以工作。为什么?

【问题讨论】:

【参考方案1】:

那是因为 python:3.4-slim 使用 Debian stretch (9) 作为其基础,而 mongodb 软件包在其存储库中可用。但是对于python:3.7-slim,基础是靶心(11)并且mongodb不再在它的repos中。

我建议不要在上面构建的映像中安装 mongodb,而是使用单独的 mongodb 容器。

【讨论】:

谢谢。是的,无论如何我都使用了不同的图像,这就是容器化的重点,但我试图理解它失败的原因

以上是关于构建 Docker 时出错:“包 'mongodb' 没有安装 csndidate”与 python:3.7 图像的主要内容,如果未能解决你的问题,请参考以下文章

构建 Docker 容器时出错

在 Docker 上构建 vue/quasar 应用程序时出错

使用 docker-compose 在 Windows 上构建气流时出错

docker在alpine linux中构建python django应用程序时出错

为 caffe 构建 GPU docker 映像时出错:不支持的 gpu 架构“compute_60”

尝试使用 docker 构建 vue/quasar/node 应用程序时出错:“命令 '/bin/sh -c quasar build' 返回非零代码:1”