Задать вопрос
@Lexa_Shepa

Почему в Docker копируется сначало package*.json, а затем все?

Объясните или подскажите где почитать почему в Dickerfile COPY выполняется 2 раза?
# Установка зависимостей
COPY package*.json ./     <-- Сначало это.
RUN npm install
# Для использования в продакшне
# RUN npm install --production
# Копирование файлов проекта и сборка проекта
COPY . .     <-- И вот это


Почему изначально например все не скопировать?
В поисковике писал по разному но не нашел конкретного ответа.
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Скорее всего, это сделано для того, чтобы не пересобирать слои, а использовать закэшированные в случае, когда зависимости не поменялись между сборками. Это существенно ускоряет процесс.
Ответ написан
fenrir1121
@fenrir1121
Начни с документации
При сборке каждая команда создает новый слой, который включает в себя только те изменения, которые были выполнены этой командой.
Слои кэшируются и при изменении слоя пересоздаются только нижележащие слои, следовательно в таком формате больше вероятность переиспользования этих слоев в других образах, быстрее сборка.

И это есть в документации: https://docs.docker.com/build/guide/layers/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы