intermediate

Слои

Используйте кэш слоёв осознанно: изменения зависимостей, исходников и build output инвалидируют только нужные шаги образа.

Слои образа — кэшируемые дельты ФС. Эффективные Node.js-образы ставят редко меняющиеся входы зависимостей перед часто меняющимся исходником, чтобы пересборка переиспользовала слой install без скрытых входов корректности.

					# Хорошо: смена lockfile инвалидирует только install
COPY package.json package-lock.json ./
RUN npm ci
COPY src ./src
RUN npm run build

# Плохо: любая правка исходника ломает install
COPY . .
RUN npm ci && npm run build
				

Ключи кэша в CI должны включать хеш lockfile, digest base image и платформу (`linux/amd64` vs `arm64`), когда важны native-модули.

На интервью: инвалидация кэша, почему смена lockfile должна сбрасывать install и как порядок слоёв влияет на CI и локальный feedback.

Типовые ошибки: чрезмерная оптимизация кэша сохраняет устаревшие generated-артефакты; гигантские цепочки `RUN` усложняют отладку.

Компромисс — быстрые пересборки против риска устаревших слоёв при неполных входах.

Чеклист:

  • Кэш зависимостей по манифесту и lockfile.
  • Инвалидация при изменениях исходника или конфига, влияющих на output.
  • Понятные, разделённые слои.
  • Платформа в ключах кэша при разных native deps.