# Stage 1: Build
FROM node:22-alpine AS builder

WORKDIR /app

# Build arguments for environment variables
ARG NEXT_PUBLIC_DEVOPS_API_URL
ARG NEXT_PUBLIC_PLATFORM_URL
ARG NEXT_PUBLIC_ADMIN_WEB_URL
ARG NEXT_PUBLIC_PRODUCT_ID
ARG NEXT_PUBLIC_PRODUCT_NAME

# Set environment variables for build
ENV NEXT_PUBLIC_DEVOPS_API_URL=${NEXT_PUBLIC_DEVOPS_API_URL}
ENV NEXT_PUBLIC_PLATFORM_URL=${NEXT_PUBLIC_PLATFORM_URL}
ENV NEXT_PUBLIC_ADMIN_WEB_URL=${NEXT_PUBLIC_ADMIN_WEB_URL}
ENV NEXT_PUBLIC_PRODUCT_ID=${NEXT_PUBLIC_PRODUCT_ID}
ENV NEXT_PUBLIC_PRODUCT_NAME=${NEXT_PUBLIC_PRODUCT_NAME}

# Install dependencies
COPY package.json pnpm-lock.yaml* ./
RUN npm install -g pnpm@10.6.5
RUN pnpm install

# Copy source
COPY next.config.js tsconfig.json tailwind.config.ts postcss.config.js ./
COPY src src/

# Build
RUN pnpm build

# Stage 2: Run
FROM node:22-alpine AS runner

WORKDIR /app

# Install production dependencies
COPY package.json pnpm-lock.yaml* ./
RUN npm install -g pnpm@10.6.5
RUN pnpm install --prod --ignore-scripts

# Copy built web
COPY --from=builder /app/.next ./.next
COPY public ./public

# Set environment
ENV NODE_ENV=production
ENV PORT=3000

EXPOSE 3000

CMD ["npm", "start"]
