FROM node:24-alpine WORKDIR /app # Copy package files COPY package*.json ./ COPY tsconfig*.json ./ COPY nest-cli.json ./ COPY eslint.config.mjs ./ # Install dependencies RUN npm ci # Copy Prisma schema COPY prisma ./prisma # Generate Prisma client RUN npx prisma generate # Copy source code COPY src ./src # Build the application RUN npm run build # Create uploads directory RUN mkdir -p uploads # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD node -e "require('http').get('http://localhost:3000', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})" || exit 1 # Start application CMD ["node", "dist/main.js"]