FROM node:20-alpine AS base # Install pnpm RUN npm install -g pnpm # Set working directory WORKDIR /app # Copy package.json and install dependencies FROM base AS dependencies COPY package.json ./ RUN pnpm install # Build the application FROM dependencies AS build COPY . . RUN pnpm run build # Production image FROM node:20-alpine AS production WORKDIR /app # Copy necessary files for production COPY --from=build /app/public ./public COPY --from=build /app/.next ./.next COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/package.json ./package.json COPY --from=build /app/next.config.ts ./next.config.ts # Set environment variables ENV NODE_ENV=production ENV PORT=3000 # Expose port EXPOSE ${PORT} # Start the application CMD ["pnpm", "start"]