Собирайте Node.js-приложение multi-stage Dockerfile, запускайте непривилегированным пользователем и фиксируйте major-ветку образа. Секреты не копируйте в image.
Важно: Node 24 указан как текущая LTS-основа на дату ревизии; перед сборкой проверьте release schedule и совместимость зависимостей.
1. Создайте Dockerfile
FROM node:24-bookworm-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build --if-present
FROM node:24-bookworm-slim
ENV NODE_ENV=production
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev && npm cache clean --force
COPY --from=build /app .
USER node
EXPOSE 3000
CMD ["node", "server.js"]
2. Добавьте .dockerignore
node_modules
.git
.env
npm-debug.log
3. Соберите и запустите локально
docker build --pull -t example-app:1 .
docker run --rm --name example-app -p 127.0.0.1:3000:3000 --env-file .env example-app:1
4. Поставьте reverse proxy и healthcheck
Backend оставьте на 127.0.0.1, TLS завершайте в Nginx. В production добавьте HEALTHCHECK, лимиты ресурсов и централизованные логи.
Для размещения приложения можно сравнить хостинги для Node.js по доступным ресурсам и возможностям масштабирования.