Копирование файла с хоста в процессе сборки Docker для минимизации размера изображения - PullRequest
2 голосов
/ 07 мая 2019

Я создаю образ контейнера, в котором установлено два больших (10 ГБ) приложения.В настоящее время я использую:

COPY <installer.file> <dest>

RUN <install application> \
   && rm <application installer file>

Однако у меня сложилось впечатление, что, если бы я смог сделать следующее:

RUN cp <installer files from host> \
   && <install application> \
   && rm <application installer file>

Мой файл изображения был бы значительно меньше.(Чтобы уточнить, это удалило бы слой, в котором был файл установщика.)

Я знаю, что тома не монтируются до конца процесса сборки - есть ли другой способ сделать это?

1 Ответ

1 голос
/ 07 мая 2019

Вы можете использовать многоэтапную сборку:

FROM some_image as build

COPY <installer.file> <dest>

RUN <install application> \
   && rm <application installer file>

FROM some_image

COPY --from=build / /

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

В последней строке вы также можете скопировать только те папки, где приложение было фактически установлено.

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