无法通过正则表达式在 python:3.8.3 docker 图像中找到任何包
Couldn't find any package by regex in 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
指令rm -rf /var/lib/apt/lists/*
或多或少否定了apt-get update
。此后,APT 不再能够访问可用软件包列表。将 rm
移到最后(也许考虑使用更安全的 apt-get clean all
)。
您正在尝试在执行 rm -rf /var/lib/apt/lists/*
后使用 apt-get install
。那保证不会有好下场。最初尝试删除 rm
命令以查看是否有帮助。如果您确实需要减小图像的大小,请将 rm
命令作为 运行 语句中的最后一个命令。
如果您真的想减小图片大小,请尝试切换为使用 python:3.8-slim
或 python:3.8-alpine
。 Alpine 与默认值 Ubuntu 不同 OS,但它的包管理器可以被告知不要在本地缓存文件。例如
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
某些软件可能以不同的软件包名称提供,因此您必须检查一下。
我是 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
指令rm -rf /var/lib/apt/lists/*
或多或少否定了apt-get update
。此后,APT 不再能够访问可用软件包列表。将 rm
移到最后(也许考虑使用更安全的 apt-get clean all
)。
您正在尝试在执行 rm -rf /var/lib/apt/lists/*
后使用 apt-get install
。那保证不会有好下场。最初尝试删除 rm
命令以查看是否有帮助。如果您确实需要减小图像的大小,请将 rm
命令作为 运行 语句中的最后一个命令。
如果您真的想减小图片大小,请尝试切换为使用 python:3.8-slim
或 python:3.8-alpine
。 Alpine 与默认值 Ubuntu 不同 OS,但它的包管理器可以被告知不要在本地缓存文件。例如
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
某些软件可能以不同的软件包名称提供,因此您必须检查一下。