Qu'est-ce que .build-deps pour la commande apk add --virtual?


141

Que contient .build-depsla commande suivante? Je ne trouve pas d'explication dans la documentation Alpine. S'agit-il d'un fichier prédéfini? Est voir cela référencé dans de nombreux 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

34
Notez que le fait d'avoir la suppression dans une commande RUN distincte ne réduira pas la taille de l'image, car la suppression est exécutée dans un nouveau calque du système de fichiers.
scipilot

Réponses:


235

Si vous voyez la documentation

  -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

Cela signifie que lorsque vous installez des packages, ces packages ne sont pas ajoutés aux packages globaux. Et ce changement peut être facilement annulé. Donc, si j'ai besoin de gcc pour compiler un programme, mais une fois que le programme est compilé, je n'ai plus besoin de gcc.

Je peux installer gcc et d'autres packages requis dans un package virtuel et toutes ses dépendances et tout peut être supprimé de ce nom de package virtuel. Voici un exemple d'utilisation

apk add --virtual mypacks gcc vim
apk del mypacks

La commande suivante supprimera les 18 packages installés avec la première commande.


1
Il convient également de mentionner qu'il est important d'utiliser un nom unique pour un package virtuel, qui n'existe pas dans les référentiels actuellement configurés, sinon l'installation des packages réussit mais n'installe pas ce dont vous avez besoin.
bazeusz

1
Remarque: vous devez l'exécuter dans une commande RUN, sinon il ne peut pas être supprimé de la couche d'image Docker précédente stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.