Що таке .build-deps для apk add --virtual команда?


140

Що .build-depsв наступній команді? Я не можу знайти пояснення в альпійських документах. Це файл, який заздалегідь визначений? На це посилається в багатьох 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
Зауважте, наявність дель в окремій команді RUN не зменшить розмір зображення, оскільки видалення виконується в новому шарі файлової системи.
науковець

Відповіді:


235

Якщо ви бачите документацію

  -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
Варто також зазначити, що важливо використовувати унікальне ім'я для віртуального пакету, який не існує в поточно налаштованих сховищах, інакше встановлення пакетів вдале, але не встановлює те, що вам потрібно.
bazeusz

1
Примітка: ви повинні виконати його в одну команду RUN, інакше вона не може бути видалений з попереднього Докер зображення шару stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.