docker-compose.yml 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. version: "3.8"
  2. services:
  3. cfc-backend:
  4. build:
  5. context: ../cfc-backend
  6. dockerfile: Dockerfile
  7. ports:
  8. - "9082:9082"
  9. environment:
  10. - SPRING_PROFILES_ACTIVE=prod
  11. - python.enabled=true
  12. - python.base-url=http://langgraph-svc:9000
  13. networks:
  14. - cfc-net
  15. restart: unless-stopped
  16. healthcheck:
  17. test: ["CMD", "curl", "-f", "http://localhost:9082/actuator/health"]
  18. interval: 30s
  19. timeout: 5s
  20. retries: 3
  21. langgraph-svc:
  22. image: cfc-langgraph-langgraph-svc:v3
  23. build:
  24. context: .
  25. dockerfile: Dockerfile
  26. ports:
  27. - "9000:9000"
  28. env_file:
  29. - .env.production
  30. environment:
  31. - JAVA_BASE_URL=http://172.17.0.1:9082
  32. - JAVA_CONTEXT_URL=http://172.17.0.1:9082/api/ai/context
  33. - CHROMA_DB_PATH=/data/chroma_db
  34. - JSON_LOGS=true
  35. # LangSmith 三个变量从 env_file (.env.production) 读取,不再覆盖
  36. volumes:
  37. # 共享 Java 文件上传目录(LangGraph 读取已上传的 PDF 文件)
  38. - /data/cfc-uploads:/data/cfc-uploads
  39. # Chroma 向量数据库持久化
  40. - langgraph-data:/data/chroma_db
  41. networks:
  42. - cfc-net
  43. restart: unless-stopped
  44. healthcheck:
  45. test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:9000/health', timeout=5).status==200 else 1)"]
  46. interval: 30s
  47. timeout: 5s
  48. retries: 3
  49. prometheus:
  50. image: prom/prometheus:latest
  51. volumes:
  52. - ./prometheus.yml:/etc/prometheus/prometheus.yml
  53. - prometheus-data:/prometheus
  54. networks:
  55. - cfc-net
  56. restart: unless-stopped
  57. profiles:
  58. - monitoring
  59. networks:
  60. cfc-net:
  61. volumes:
  62. langgraph-data:
  63. prometheus-data: