Выбор ответа Junior Dockerfile и multi-stage спрашивают часто обновлено

Порядок COPY для кеша

Вопрос

Какой порядок инструкций даст самую быструю пересборку при частых правках кода Node.js-приложения?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: COPY package.json ./, RUN npm ci, COPY . . Кеш инструкции сбрасывается, если изменились её входные данные, и тогда пересобираются все последующие слои.

Варианты ответа

  1. COPY . ., затем RUN npm ci
  2. RUN npm ci, затем COPY . .
  3. COPY package*.json ./, RUN npm ci, COPY . .правильный ответ
  4. Порядок не важен: BuildKit сам переставит слои ради кеша

Разбор

Кеш инструкции сбрасывается, если изменились её входные данные, и тогда пересобираются все последующие слои. Копируя сначала только манифесты, мы сохраняем кеш npm ci, пока не поменялись зависимости. С COPY . . первым любая правка кода перезапустит установку. npm ci до копирования упадёт: нет package.json.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.