foundation

Образы

Упаковывайте слои ФС приложения, метаданные, entrypoint и runtime defaults в неизменяемые артефакты для deploy.

Docker-образ — неизменяемый артефакт: упорядоченные слои файловой системы, метаданные, команда по умолчанию, exposed ports и допущения runtime. Для Node.js-сервисов нужно зафиксировать base image, установить зависимости из lockfile, исключить dev-only файлы и собирать воспроизводимо из исходников.

| Понятие | Смысл | |---------|-------| | Tag | Человекочитаемая метка вроде `1.2.3` — мутабельна при переиспользовании | | Digest | Хеш содержимого `sha256:…` — неизменная идентичность | | Layer | Кэшируемая дельта ФС от каждого шага сборки |

					FROM node:20-bookworm-slim@sha256:…
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY dist ./dist
USER node
CMD ["node", "dist/server.js"]
				

Продвигайте один и тот же digest между окружениями вместо пересборки на каждом этапе. Сканируйте образы на CVE и держите runtime-образы компактными.

На интервью: tag vs digest, slim-образы, SBOM, сканирование уязвимостей и почему пересборка на каждое окружение даёт drift.

Типовые ошибки: мутабельный тег `latest`; раздутые образы замедляют deploy и расширяют attack surface; секреты или локальный `node_modules` в слоях.

Компромисс — удобство тегов против воспроизводимости, аудируемости и безопасности деплоя.

Чеклист:

  • Фиксируйте base image по digest при повышенном риске.
  • Сборка из закоммиченного lockfile.
  • Promotion неизменяемых образов между окружениями.
  • Регулярное сканирование и контроль размера образа.