FROM node:20-alpine AS base # Install openssl for Prisma RUN apk add --no-cache openssl WORKDIR /usr/src/app COPY package*.json ./ COPY prisma ./prisma/ # Development stage FROM base AS development RUN npm install COPY . . RUN npx prisma generate EXPOSE 3001 CMD ["npm", "run", "start:dev"] # Build stage for production FROM base AS build RUN npm install COPY . . RUN npx prisma generate RUN npm run build RUN npm prune --production # Production stage FROM node:20-alpine AS production RUN apk add --no-cache openssl WORKDIR /usr/src/app COPY package*.json ./ COPY --from=build /usr/src/app/node_modules ./node_modules COPY --from=build /usr/src/app/dist ./dist COPY --from=build /usr/src/app/prisma ./prisma COPY --from=build /usr/src/app/public ./public EXPOSE 3001 CMD ["node", "dist/src/main.js"]