# Build stage
FROM node:18-alpine AS builder
# Install pnpm
RUN corepack enable
RUN corepack prepare pnpm@8.14.0 --activate
WORKDIR /app
# Copy package files
COPY package.json pnpm-lock.yaml* ./
COPY .npmrc* ./
# Install dependencies
RUN pnpm install --frozen-lockfile
# Copy source files
COPY . .
# Build the application
RUN pnpm build
# Production stage
FROM node:18-alpine
# Install pnpm
RUN corepack enable
RUN corepack prepare pnpm@8.14.0 --activate
WORKDIR /app
# Copy built application
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./
COPY --from=builder /app/pnpm-lock.yaml* ./
COPY --from=builder /app/.npmrc* ./
# Install production dependencies only
RUN pnpm install --frozen-lockfile --prod
# Create non-root user
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
USER nextjs
EXPOSE 3000
CMD ["pnpm", "start"]