以下命令中的.build-deps
是什么?我无法在Alpine文档中找到解释。这是一个预定义的文件吗?在许多Dockerfiles中都会看到这个引用。
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
答案 0 :(得分:128)
如果您看到文档
-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个软件包。
答案 1 :(得分:4)
.build-deps
是一个任意名称,用于在 Alpine 中调用“虚拟包”,您将在其中添加包。
它创建了一个额外的包“世界”,您将需要在有限的时间内(例如用于构建其他东西的编译器)。
它的主要目的是使您的图像尽可能简洁明了,因为一旦使用了这些包,您就可以轻松摆脱它。
请记住,如果要达到轻量级的主要目的,应该将其包含在同一个RUN
中。