Зачем объединять аргументы установки в файл Docker? - PullRequest
0 голосов
/ 21 октября 2019

Один из наших проектов имеет Dockerfile с кодом, подобным следующему:

RUN apt-get install -y PACKAGE1 PACKAGE2 PACKAGE3 etc

Это эквивалентно:

RUN apt-get install -y PACKAGE1
RUN apt-get install -y PACKAGE2
RUN apt-get install -y PACKAGE3
etc

Последний метод использует больше символов, но этоболее явный и (по крайней мере для меня) более легкий для сканирования и визуальной отладки. Например, вы можете найти дубликаты пакетов или добавить комментарий о том, почему требуется конкретный пакет.

Есть ли технические преимущества в том, что все в одной строке наподобие этой?

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Преимущество второго подхода состоит в том, что созданные слои изображения используются повторно, если вы перестраиваете изображение. Каждый уровень соответствует инструкции по обработке данных Dockerfile. Docker кэширует созданные слои, которые не изменились, и перестраивает только слой, который изменился, и слои, которые следуют в соответствии с инструкциями Dockerfile. Таким образом, инструкции по манипулированию данными должны быть упорядочены в соответствии с изменчивостью манипулируемых данных. Например, Dockerfile инструкции, такие как копирование исходного кода, должны быть последними.

0 голосов
/ 21 октября 2019

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

с другой стороны, первая команда создаст только еще один слой

см. это и это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...