首页 > 解决方案 > 在 python:3.8.3 docker image 中无法通过正则表达式找到任何包

问题描述

我是 docker 新手,我创建了一个 docker 映像,这就是我的 docker 文件的样子。

FROM python:3.8.3

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
    postgresql-client \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get install -y gcc libtool-ltdl-devel xmlsec1-1.2.20 xmlsec1-devel-1.2.20 xmlsec1 openssl- 
    1.2.20 xmlsec1-openssl-devel-1.2.20 \
    && apt-get -y install curl gnupg \
    && curl -sL https://deb.nodesource.com/setup_14.x  | bash - \
    && apt-get -y install nodejs 

WORKDIR /app/

COPY . /app

RUN pip install -r production_requirements.txt \
    && front_end/noa-frontend/npm install

此图像用于 docker-compose.yml 的应用服务。因此,当我运行 docker-compose 构建时,我收到以下错误,说它找不到包。这些是我想要安装的几个依赖项以安装 python 包。

在此处输入图像描述

一开始,我运行了 apt-get update 来更新软件包列表。

谁能帮我解决这个问题。

更新了 Dockerfile

FROM python:3.8.3

RUN apt-get update 
RUN apt-get install -y postgresql-client\
    && apt-get install -y gcc libtool-ltdl-devel xmlsec1-1.2.20 xmlsec1- 
    devel-1.2.20 xmlsec1 openssl-1.2.20 xmlsec1-openssl-devel-1.2.20 \
    && apt-get -y install curl gnupg \
    && curl -sL https://deb.nodesource.com/setup_14.x  | bash - \
    && apt-get -y install nodejs

WORKDIR /app/

COPY . /app

RUN pip install -r production_requirements.txt \
    && front_end/noa-frontend/npm install

标签: pythondockerubuntudocker-composeapt-get

解决方案


apt-get install你在做之后尝试使用rm -rf /var/lib/apt/lists/*。保证不会有好的结局。最初尝试删除该rm命令以查看是否有帮助。如果您确实需要减小图像的大小,则将该rm命令作为运行语句中的最后一个命令。

如果您真的想减小图像大小,请尝试切换到使用python:3.8-slimor python:3.8-alpine。Alpine 与 Ubuntu 的默认操作系统不同,但可以告诉它的包管理器不要在本地缓存文件。例如。

FROM python:3.8-alpine

RUN apk add --no-cache postgresql-client
RUN apk add --no-cache gcc libtool-ltdl-devel xmlsec1-1.2.20 xmlsec1-devel-1.2.20 xmlsec1 \
    openssl-1.2.20 xmlsec1-openssl-devel-1.2.20
RUN apk add --no-cache curl gnupg
RUN apk add --no-cache  nodejs 
RUN curl -sL https://deb.nodesource.com/setup_14.x  | bash -


WORKDIR /app/

COPY . /app

RUN pip install -r production_requirements.txt \
    && front_end/noa-frontend/npm install

某些软件可能以不同的软件包名称提供,因此您必须检查一下。


推荐阅读