docker-compose.yml 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. services:
  2. pipeline:
  3. build: .
  4. # The image runs as the non-root `node` user for Kubernetes. For local dev
  5. # we override back to root so the ./output bind mount keeps working
  6. # regardless of the host user's uid; Kubernetes sets fsGroup instead.
  7. user: "0:0"
  8. ports:
  9. - "${PORT:-13000}:3000"
  10. environment:
  11. - OPENAI_API_KEY=${OPENAI_API_KEY}
  12. - OPENAI_BASE_URL=${OPENAI_BASE_URL}
  13. - OPENAI_TTS_API_KEY=${OPENAI_TTS_API_KEY}
  14. - OPENAI_TTS_BASE_URL=${OPENAI_TTS_BASE_URL}
  15. - FISH_AUDIO_API_KEY=${FISH_AUDIO_API_KEY}
  16. - MINIMAX_API_KEY=${MINIMAX_API_KEY}
  17. - MINIMAX_GROUP_ID=${MINIMAX_GROUP_ID}
  18. - ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY}
  19. # Unified output + cache retention
  20. - OUTPUT_DIR=${OUTPUT_DIR:-/app/output}
  21. - OUTPUT_RETENTION_DAYS=${OUTPUT_RETENTION_DAYS:-30}
  22. # Container timezone — keeps logs, ffmpeg, and new Date() on Beijing time
  23. # so the daily-trending cover date never rolls over a day early/late.
  24. - TZ=${TZ:-Asia/Shanghai}
  25. # OSS (Alibaba Cloud Object Storage) — publish stage
  26. - OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID:-}
  27. - OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET:-}
  28. - OSS_REGION=${OSS_REGION:-}
  29. - OSS_BUCKET=${OSS_BUCKET:-}
  30. - OSS_ENDPOINT=${OSS_ENDPOINT:-}
  31. - OSS_PATH=${OSS_PATH:-}
  32. - OSS_PUBLIC_DOMAIN=${OSS_PUBLIC_DOMAIN:-}
  33. # Feishu custom-bot webhook — publish stage
  34. - FEISHU_WEBHOOK_URL=${FEISHU_WEBHOOK_URL:-}
  35. - FEISHU_WEBHOOK_SECRET=${FEISHU_WEBHOOK_SECRET:-}
  36. volumes:
  37. - ./output:/app/output
  38. - pipeline-jobs:/tmp/pipeline-jobs
  39. # Use public DNS resolvers directly. The container inherits the host's
  40. # resolver, which can silently fail to resolve some public domains (e.g.
  41. # open.feishu.cn behind a VPN/proxy) and break the Feishu webhook. Override
  42. # via DNS_SERVER_1/DNS_SERVER_2 in .env if you need an internal resolver.
  43. dns:
  44. - ${DNS_SERVER_1:-223.5.5.5}
  45. - ${DNS_SERVER_2:-114.114.114.114}
  46. restart: unless-stopped
  47. volumes:
  48. pipeline-jobs: