docker-compose.yml 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. # Pass EVERY variable from .env (API keys, OSS, Feishu, SCHEDULES,
  11. # SCHEDULER_ENABLED, LOG_LEVEL, …) into the container automatically via
  12. # env_file — no per-variable list to maintain. The previous explicit list
  13. # silently dropped any var not enumerated, so new knobs set in .env never
  14. # reached the container. `environment` below only adds container-specific
  15. # defaults for keys that may be absent from .env, and overrides env_file for
  16. # those keys.
  17. env_file:
  18. - .env
  19. environment:
  20. - OUTPUT_DIR=${OUTPUT_DIR:-/app/output}
  21. - OUTPUT_RETENTION_DAYS=${OUTPUT_RETENTION_DAYS:-30}
  22. - TZ=${TZ:-Asia/Shanghai}
  23. - TIMEZONE=${TIMEZONE:-Asia/Shanghai}
  24. volumes:
  25. - ./output:/app/output
  26. - pipeline-jobs:/tmp/pipeline-jobs
  27. # Use public DNS resolvers directly. The container inherits the host's
  28. # resolver, which can silently fail to resolve some public domains (e.g.
  29. # open.feishu.cn behind a VPN/proxy) and break the Feishu webhook. Override
  30. # via DNS_SERVER_1/DNS_SERVER_2 in .env if you need an internal resolver.
  31. dns:
  32. - ${DNS_SERVER_1:-223.5.5.5}
  33. - ${DNS_SERVER_2:-114.114.114.114}
  34. restart: unless-stopped
  35. volumes:
  36. pipeline-jobs: