FROM node:22-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ # Install all dependencies (including devDependencies) RUN npm ci # Copy the rest of the application COPY . . # Build the application (compiles TypeScript to dist folder) # We also generate prisma client here if prisma schema is present. RUN npm run build # Production image FROM node:22-alpine WORKDIR /app # Copy only package files COPY package*.json ./ # Install only production dependencies RUN npm ci --only=production # Copy built artifacts from the builder stage COPY --from=builder /app/dist ./dist # If we have prisma later, we need to copy generated client: # COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma # COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma EXPOSE 3000 # Start the application CMD ["node", "dist/main"]