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.