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

Docker 什么是.build deps for apk add--virtual命令?,docker,dockerfile,alpine,alpine-package-keeper,Docker,Dockerfile,Alpine,Alpine Package Keeper,以下命令中的.build deps是什么?我在阿尔卑斯山的文件里找不到解释。这是一个预定义的文件吗?可以在许多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 运行ap

以下命令中的
.build deps
是什么?我在阿尔卑斯山的文件里找不到解释。这是一个预定义的文件吗?可以在许多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
运行apk add--no cache--virtual.build deps\
海湾合作委员会\
自由式开发\
musl开发
运行pip安装--无缓存目录\
运行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和其他必需的包,它的所有依赖项和所有内容都可以通过这个虚拟包名删除。下面是一个示例用法

apk add --virtual mypacks gcc vim
apk del mypacks

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

。build deps
是在Alpine中调用“虚拟软件包”的任意名称,您将在其中添加软件包

它创建了一个额外的“世界”包,您将在有限的时间内需要这些包(例如,用于构建其他东西的编译器)

它的主要目的是让你的形象尽可能的瘦和轻,因为一旦使用了这些包装,你就可以很容易地摆脱它


请记住,如果要实现轻量级的主要目的,它应该包含在相同的
运行中。

注意,在单独的运行命令中使用del不会减小图像大小,由于删除是在文件系统的新层中运行的。另外值得一提的是,必须为虚拟包使用当前配置的存储库中不存在的唯一名称,否则安装包会成功,但不会安装所需的内容。注意:必须在一个run命令中执行它,否则无法从上一个Docker图像层中删除它