# 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"]