# Стадия сборки (builder) FROM node:22-alpine AS builder # Устанавливаем рабочую директорию WORKDIR /app # Копируем package.json и package-lock.json (или yarn.lock) COPY package*.json ./ # Устанавливаем зависимости RUN npm install --frozen-lockfile # Копируем все файлы проекта COPY . . # Собираем приложение RUN npm run build # Стадия запуска (runner) FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 # Включаем node пользователя RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # Set the correct permission for prerender cache RUN mkdir .next RUN chown nextjs:nodejs .next # Копируем необходимые файлы из стадии builder COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nextjs:nodejs /app/public /app/public # Переключаем на пользователя nextjs USER nextjs # Открываем порт EXPOSE 3000 # Запускаем приложение ENV PORT=3000 ENV HOSTNAME="0.0.0.0" CMD ["node", "server.js"]