# Backend — Node.js 20 (Alpine). Порт 4000 наружу не публикуется (только через nginx). FROM node:20-alpine WORKDIR /app # Сначала манифесты — кэш слоёв. COPY package.json ./ RUN npm install --omit=dev COPY src ./src ENV NODE_ENV=production EXPOSE 4000 # Запуск от непривилегированного пользователя. USER node CMD ["node", "src/index.js"]