Основные моменты:
- Какой базовый образ использовать?
-
node:<version> — полноразмерный образ на основе Debian, удобен для разработки. -
node:<version>-slim — урезанная версия, без ненужных инструментов. -
node:<version>-alpine — суперлёгкий образ, но требует совместимости с musl вместо glibc.- Как уменьшить размер образа?
- Использование
slim или alpine. - Уменьшение количества слоёв в Dockerfile.
- Очистка временных файлов после установки зависимостей.
- Оптимизация производительности
- Включение
NODE_ENV=production перед установкой пакетов. - Использование
--omit=dev в npm ci или yarn install --production. - Кэширование
node_modules для ускорения сборки.- Дополнительные аспекты
- Выбор образа с LTS-версией Node.js для стабильности.
- Изоляция зависимостей и минимизация уязвимостей.
- Использование многослойных образов (multi-stage builds) для уменьшения итогового размера.
Выбор правильного контейнерного образа может значительно повлиять на размер, производительность и безопасность вашего Node.js-приложения.
https://labs.iximiuz.com/tutorials/how-to-choose-nodejs-container-image
✍️ @nodejs_lib
