# Этап 1: Установка зависимостей
FROM node:20-alpine AS deps
WORKDIR /app

# Копируем package.json и package-lock.json
COPY package.json package-lock.json* ./

# Устанавливаем зависимости
RUN npm ci --only=production

# Этап 2: Сборка приложения
FROM node:20-alpine AS builder
WORKDIR /app

# Копируем зависимости из предыдущего этапа
COPY --from=deps /app/node_modules ./node_modules
COPY . .

# Переменные окружения для сборки (если нужны)
ENV NEXT_TELEMETRY_DISABLED=1

# Сборка Next.js
RUN npm run build

# Этап 3: Production runtime
FROM node:20-alpine AS runner
WORKDIR /app

# Переменные окружения
ENV NODE_ENV=production \
    NEXT_TELEMETRY_DISABLED=1 \
    PORT=3000 \
    HOSTNAME="0.0.0.0"

# Создаём группу и пользователя для безопасности
RUN addgroup --system --gid 1001 nodejs \
    && adduser --system --uid 1001 nextjs

# Копируем собранные файлы из builder
# Standalone output содержит только необходимое для запуска
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public

# Устанавливаем владельца файлов
RUN chown -R nextjs:nodejs /app

# Переключаемся на непривилегированного пользователя
USER nextjs

# Открываем порт
EXPOSE 3000

# Команда запуска
CMD ["node", "server.js"]
