FROM node:20-alpine AS builder

# Установка системных зависимостей
RUN apk add --no-cache \
    python3 \
    make \
    g++ \
    libc6-compat

WORKDIR /app

# Копируем только package files сначала
COPY package*.json ./
COPY nuxt.config.ts ./
COPY tsconfig.json ./

# Устанавливаем ВСЕ зависимости (включая dev)
RUN npm ci

# Копируем исходный код
COPY . .

# Увеличиваем память для Node.js
ENV NODE_OPTIONS="--max-old-space-size=2048"

# Собираем приложение с таймаутом
RUN timeout 300 npm run build || echo "Build might have timed out but continuing"

FROM node:20-alpine AS production

WORKDIR /app

# Копируем только production зависимости
COPY --from=builder /app/package*.json ./
RUN npm ci --only=production && npm cache clean --force

# Копируем собранное приложение
COPY --from=builder /app/.output ./.output

# Создаем пользователя
RUN addgroup -g 1001 -S nodejs && \
    adduser -S nuxtjs -u 1001 && \
    chown -R nuxtjs:nodejs /app

USER nuxtjs

EXPOSE 3000

CMD ["node", ".output/server/index.mjs"]