¿Qué es .build-deps para el comando apk add --virtual?
¿ Qué hay .build-deps
en el siguiente comando? No puedo encontrar una explicación en los documentos de Alpine. ¿Es este un archivo predefinido? Veo que se hace referencia a esto en muchos 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
Si ves la documentación
-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
Lo que eso significa es que cuando instalas paquetes, esos paquetes no se agregan a los paquetes globales. Y este cambio se puede revertir fácilmente. Entonces, si necesito gcc para compilar un programa, pero una vez que el programa está compilado, ya no necesito gcc.
Puedo instalar gcc y otros paquetes necesarios en un paquete virtual y todas sus dependencias y todo se puede eliminar con este nombre de paquete virtual. A continuación se muestra un ejemplo de uso.
RUN apk add --virtual mypacks gcc vim \
&& apk del mypacks
El siguiente comando eliminará los 18 paquetes instalados con el primer comando.
En Docker, estos deben ejecutarse como un solo RUN
comando (como se muestra arriba); de lo contrario, no reducirá el tamaño de la imagen.
.build-deps
es un nombre arbitrario para llamar a un "paquete virtual" en Alpine, donde agregará paquetes.
Crea un 'mundo' extra de paquetes que necesitará durante un período de tiempo limitado (por ejemplo, compiladores para crear otras cosas).
Su objetivo principal es mantener su imagen lo más esbelta y liviana posible, porque puede deshacerse de ella fácilmente una vez que se hayan usado esos paquetes.
Recuerde que debe incluirse en el mismo RUN
si desea lograr el objetivo principal de ligereza.