# Immagine base: dipendenze complete + client Prisma generato FROM node:22-alpine AS base WORKDIR /app RUN apk add --no-cache openssl COPY package*.json ./ RUN npm ci COPY prisma ./prisma RUN npx prisma generate COPY . . # Stage di sviluppo: usato da docker-compose.yml (hot reload con tsx) FROM base AS dev ENV NODE_ENV=development EXPOSE 3000 CMD ["npm", "run", "dev"] # Stage di build: compila TypeScript in dist/ FROM base AS build RUN npm run build # Stage di produzione: solo runtime, senza dipendenze dev FROM node:22-alpine AS production WORKDIR /app ENV NODE_ENV=production RUN apk add --no-cache openssl COPY package*.json ./ RUN npm ci --omit=dev COPY --from=build /app/dist ./dist COPY --from=build /app/prisma ./prisma COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma COPY --from=build /app/node_modules/@prisma/client ./node_modules/@prisma/client EXPOSE 3000 CMD ["node", "dist/server.js"]