在 Docker 镜像中安装 build-essential 而无需执行 `apt-get update`?

EuR*_*rth 7 gcc docker dockerfile

我有一个以以下内容开头的 Dockerfile:

FROM python:3.7-slim

RUN apt-get update && apt-get install build-essential -y
Run Code Online (Sandbox Code Playgroud)

问题是,这个层总是在变化,所以当我运行时docker build -t <mytag> .,这个层(和后续的)会再次运行,这会占用大量时间。

有没有办法build-essential在我的 Dockerfile 中安装一个不会不断变化的层?


编辑:我在 RUN 之前有一个 COPY 行,我从问题中删除了它,因为我不想包含私有文件的名称,但我没有想到这是使构建重新运行的原因这一步。

Lin*_*nPy 10

创建一个基本图像,其中包含:

FROM python:3.7-slim

RUN apt-get update && apt-get install build-essential -y
Run Code Online (Sandbox Code Playgroud)

构建它:

docker build -t mybase .
Run Code Online (Sandbox Code Playgroud)

然后将其用于新图像:

FROM mybase
Run Code Online (Sandbox Code Playgroud)