Dockerfile.api 898 B

123456789101112131415161718192021222324252627282930313233
  1. FROM node:22-slim
  2. # Install FFmpeg + wget (for thumbnail generation and healthcheck)
  3. # DNS: 1.1.1.1 for fast DNS resolution; fallback to security.debian.org mirror
  4. RUN cat > /etc/resolv.conf <<EOF
  5. nameserver 1.1.1.1
  6. nameserver 8.8.8.8
  7. nameserver 8.26.56.26
  8. EOF
  9. RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg wget ca-certificates && rm -rf /var/lib/apt/lists/*
  10. WORKDIR /app
  11. # Copy package files and install
  12. COPY packages/api/package*.json ./
  13. COPY packages/api/prisma ./prisma
  14. COPY packages/api/tsconfig.json ./
  15. RUN npm install && rm -rf node_modules/@prisma/client && npx prisma generate
  16. # Copy source code
  17. COPY packages/api/src ./src
  18. # Build TypeScript
  19. RUN npx tsc -p tsconfig.json
  20. # Copy the worker JS files (pure JS, not compiled — run in forked child)
  21. COPY packages/api/src/worker ./src/worker
  22. EXPOSE 3001
  23. ENV NODE_ENV=production
  24. CMD ["node", "dist/index.js"]