Введение в образ для запуска Node в Docker
Образ для разработки тащит лишние пакеты и работает от администратора. Для выкладки нужен шаблон, где остаются только файлы запуска и процесс не держит права суперпользователя внутри копии.
Зависимости для запуска отделяют от пакетов, которые нужны лишь при правке кода на диске. Установка при сборке берёт только строки из dependencies, а записи devDependencies в образ не попадают.
Порядок копирования кладёт
package.json раньше
server.js, чтобы слой
npm install не пересобирался
при каждой правке скрипта.
Два этапа сборки переносят
готовую папку /app
в финальный образ без лишних
инструментов отдельными слоями.
Пользователь приложения
запускает node server.js
от учётной записи node,
которая уже есть в официальном
образе.
Режим запуска задаёт
NODE_ENV со значением
production, и скрипт
может отличать рабочий старт
от локальной отладки.
Тонкий образ на базе
node:24-alpine уменьшает
разметку на диске при том же
server.js без сторонних
модулей.
Нативный пакет вроде
bcrypt собирается
при установке и на Alpine
требует компилятор из
системных пакетов.
Уроки раздела идут на
node:24, порт 3000
и ответ hello, как
в разделе приложения.
Alpine и нативная установка
закрывают линейку отдельными
шагами без Express и без базы.