docker-compose.yml 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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: 10s
  20. retries: 3
  21. langgraph-svc:
  22. image: cfc-langgraph-langgraph-svc:v10.3
  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. # 内存硬限制:防止 ChromaDB/搜索任务异常膨胀吃满宿主机内存导致整机 OOM
  45. mem_limit: 8g
  46. healthcheck:
  47. 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)"]
  48. interval: 30s
  49. timeout: 10s
  50. retries: 3
  51. prometheus:
  52. image: prom/prometheus:latest
  53. volumes:
  54. - ./prometheus.yml:/etc/prometheus/prometheus.yml
  55. - prometheus-data:/prometheus
  56. networks:
  57. - cfc-net
  58. restart: unless-stopped
  59. profiles:
  60. - monitoring
  61. networks:
  62. cfc-net:
  63. volumes:
  64. langgraph-data:
  65. prometheus-data: