FROM node:20-alpine AS builder WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci COPY prisma ./prisma RUN npx prisma generate COPY tsconfig.json ./ COPY src ./src RUN npm run build FROM node:20-alpine AS production RUN apk add --no-cache tini WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci --omit=dev COPY prisma ./prisma RUN npx prisma generate COPY --from=builder /app/dist ./dist RUN mkdir -p /app/data ENV NODE_ENV=production EXPOSE 3000 ENTRYPOINT ["/sbin/tini", "--"] CMD ["node", "dist/index.js"]