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 built application COPY --from=build /app/dist ./dist COPY --from=build /app/node_modules ./node_modules COPY package.json ./ # Set environment variables ENV NODE_ENV=production ENV PORT=3000 # Expose port EXPOSE ${PORT} # Start the application CMD ["node", "dist/main"]