# Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY package.json yarn.lock ./ COPY prisma ./prisma/ # Install dependencies RUN yarn install --frozen-lockfile RUN yarn prisma generate # Copy source code COPY . . # Build TypeScript code RUN yarn build # Production stage FROM node:20-alpine AS runner WORKDIR /app # Set to production environment ENV NODE_ENV=production # Copy necessary files from builder COPY --from=builder /app/package.json /app/yarn.lock ./ COPY --from=builder /app/dist ./dist COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma # Install production dependencies RUN yarn install --frozen-lockfile --production # Expose the port your server runs on EXPOSE 3001 # Start the application CMD ["yarn", "start"]