# Build stage FROM node:20-alpine AS builder WORKDIR /app # Set build-time environment variable ARG DATABASE_URL ENV DATABASE_URL=$DATABASE_URL ARG AUTH_SECRET ENV AUTH_SECRET=$AUTH_SECRET ARG NEXTAUTH_SECRET ENV NEXTAUTH_SECRET=$NEXTAUTH_SECRET # Copy package files COPY package*.json ./ COPY prisma.config.ts ./ COPY prisma ./prisma/ # Install dependencies RUN npm ci # Copy application files COPY . . # Generate Prisma Client RUN npx prisma generate # Build the application RUN npm run build # Production stage FROM node:20-alpine AS runner WORKDIR /app # Set environment to production ENV NODE_ENV=production # Copy necessary files from builder COPY --from=builder /app/package*.json ./ COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/.next ./.next COPY --from=builder /app/prisma.config.ts ./ COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/app/generated ./app/generated # Expose the port EXPOSE 3001 # Start the application CMD ["npm", "start"]