Docker многоступенчатая сборка без копирования с предыдущего изображения? - PullRequest
1 голос
/ 05 октября 2019

имеет ли какое-либо преимущество использование многоступенчатой ​​сборки в Docker, если вы не копируете файлы из ранее созданного образа? например.

FROM some_base_image as base
#Some random commands
RUN mkdir /app
RUN mkdir /app2
RUN mkdir /app3
#ETC

#Second stage starts from first stage
FROM base

#Add some files to image
COPY  foo.txt /app

Приводит ли это к уменьшению изображения или дает какие-либо другие преимущества по сравнению с не многоступенчатой ​​версией? Или многоступенчатые сборки полезны только для подготовки некоторых файлов и их последующего копирования в другой базовый образ?

1 Ответ

1 голос
/ 06 октября 2019

Или многоступенчатые сборки полезны только для подготовки некоторых файлов и последующего копирования их в другое базовое изображение?

Это основной вариант использования, описанный в " Использование нескольких-stage builds"

Основная цель - уменьшить количество слоев путем копирования файлов из одного изображения в другое, не включая среду сборки, необходимую для создания указанных файлов.

Нодругой целью может быть , а не перестройка всего Dockerfile, включая каждый этап.

Тогда ваше предложение (не копирование) все еще может применяться.

Вы можете указать целевой этап сборки. Следующая команда предполагает, что вы используете предыдущий Dockerfile, но останавливается на этапе с именем builder:

$ docker build --target builder -t alexellis2/href-counter:latest .

Несколько сценариев, в которых это может быть очень мощным:

  • Отладка определенногоэтап сборки
  • Использование этапа debug со всеми включенными символами или инструментами отладки и простой этап production
  • Использование этапа testing, в котором ваше приложение заполняется тестовыми данными, но построение для production с использованием другой стадии, которая использует реальные данные
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...