# syntax=docker/dockerfile:1.6 FROM node:22-alpine WORKDIR /app # Copy manifests first for better caching COPY package*.json ./ # Install prod deps (works even if package-lock is missing or minimal) RUN --mount=type=cache,target=/root/.npm npm install --omit=dev # Copy the rest COPY . . ENV NODE_ENV=production EXPOSE 3000 # Prisma client is generated on install, but ensure at runtime if needed: # (Coolify/containers usually run as root in alpine; OK) CMD ["sh","-c","node -e "console.log('API starting…')" && node src/server.js"]