FROM node:20-alpine WORKDIR /app # Install dependencies first (layer cache optimization) COPY package.json package-lock.json ./ RUN npm ci # Copy source code COPY . . # Generate Prisma client at build time RUN npx prisma generate # Make entrypoint executable RUN chmod +x docker-entrypoint.sh EXPOSE 3000 ENTRYPOINT ["./docker-entrypoint.sh"]