apk add --virtual 命令的 .build-deps 是什么?

What is .build-deps for apk add --virtual command?

以下命令中的.build-deps是什么?我在 Alpine 文档中找不到解释。这是预定义的文件吗?在许多 Dockerfile 中看到这个引用。

RUN apk add --no-cache --virtual .build-deps \
gcc \
freetype-dev \
musl-dev

RUN pip install --no-cache-dir <packages_that_require_gcc...> \

RUN apk del .build-deps

如果您看到文档

-t, --virtual NAME    Instead of adding all the packages to 'world', create a new 
                      virtual package with the listed dependencies and add that 
                      to 'world'; the actions of the command are easily reverted 
                      by deleting the virtual package

这意味着当您安装包时,这些包不会添加到全局包中。并且可以轻松恢复此更改。所以如果我需要gcc来编译一个程序,但是一旦程序编译好了我就不再需要gcc了。

我可以在一个虚拟包中安装 gcc 和其他所需的包,它的所有依赖项和所有东西都可以从这个虚拟包名称中删除。下面是一个用法示例

RUN apk add --virtual mypacks gcc vim \
 && apk del mypacks

下一个命令将删除第一个命令安装的所有 18 个包。

在docker中,这些必须作为单个RUN命令执行(如上所示),否则不会减小图像大小。

.build-deps是一个任意名称在Alpine中调用一个“虚拟包”,你将在其中添加包。

它会创建一个额外的 'world' 包,您将在有限的时间内需要这些包(例如,用于构建其他内容的编译器)。

它的主要目的是使您的图像尽可能保持精简和轻盈,因为一旦使用了这些软件包,您就可以轻松摆脱它。

如果要达到轻量化的主要目的,请记住一定要包含在同一个RUN