Как уменьшить размер и повысить безопасность Docker-образа?
Dockerfile и образы
Размер и безопасность образа зависят от базового образа, состава слоёв и прав процесса.
Размер
- Лёгкая база:
alpine,slimили distroless вместо полногоnodeилиubuntu. - Multi-stage build: в итог попадает только результат сборки.
npm ci --omit=devи очистка кеша пакетных менеджеров в том жеRUN..dockerignore, чтобы не копировать лишнее.
Безопасность
- Запускать процесс не от root:
FROM node:22-alpine
WORKDIR /app
COPY --chown=node:node . .
USER node
CMD ["node", "server.js"]- Фиксировать версию базы (
node:22.11-alpine) или хеш, а неlatest. - Не класть секреты в образ: ни в
ENV, ни вCOPY. Передавать их при запуске или через секреты BuildKit. - Регулярно сканировать образ (Trivy, Docker Scout) и обновлять базу.
- Минимум пакетов: меньше пакетов, меньше уязвимостей.
Коротко для собеседования
Лёгкая база, multi-stage, отсутствие лишнего, запуск не от root, закреплённые версии и никаких секретов внутри образа.