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

Что такое .build-deps в следующей команде? Я не могу найти объяснение в документах Alpine. Это предопределенный файл? См. это во многих файлах 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

person gdbj    schedule 14.09.2017    source источник
comment
Обратите внимание: наличие del в отдельной команде RUN не уменьшит размер образа, так как удаление запускается на новом уровне файловой системы.   -  person scipilot    schedule 08.04.2018


Ответы (2)


Если вы видите документацию

  -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 пакетов, установленных первой командой.

person Tarun Lalwani    schedule 14.09.2017
comment
Также стоит упомянуть, что важно использовать уникальное имя для виртуального пакета, не существующее в текущих настроенных репозиториях, в противном случае установка пакетов завершается успешно, но не устанавливает то, что вам нужно. - person bazeusz; 17.03.2020
comment
Примечание. Вы должны выполнить его в одной команде RUN, иначе его нельзя будет удалить из предыдущего слоя образа Docker stackoverflow.com/a/49714913/ 1577357 - person Zulhilmi Zainudin; 07.07.2020

.build-deps — это произвольное имя для вызова виртуального пакета в Alpine, куда вы будете добавлять пакеты.

Он создает дополнительный «мир» пакетов, которые вам понадобятся в течение ограниченного периода времени (например, компиляторы для создания других вещей).

Его главная цель – сделать ваше изображение как можно более компактным и легким, потому что вы можете легко избавиться от него после использования этих пакетов.

Пожалуйста, помните, что он должен быть включен в тот же RUN, если вы хотите достичь основной цели облегчения.

person RicarHincapie    schedule 14.01.2021