docker-compose.yml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. build:
  23. context: .
  24. dockerfile: Dockerfile
  25. ports:
  26. - "9000:9000"
  27. env_file:
  28. - .env.production
  29. environment:
  30. - JAVA_BASE_URL=http://172.17.0.1:9082
  31. - JAVA_CONTEXT_URL=http://172.17.0.1:9082/api/ai/context
  32. - CHROMA_DB_PATH=/data/chroma_db
  33. - JSON_LOGS=true
  34. # LangSmith 三个变量从 env_file (.env.production) 读取,不再覆盖
  35. volumes:
  36. # 共享 Java 文件上传目录(LangGraph 读取已上传的 PDF 文件)
  37. - /data/cfc-uploads:/data/cfc-uploads
  38. # Chroma 向量数据库持久化
  39. - langgraph-data:/data/chroma_db
  40. networks:
  41. - cfc-net
  42. restart: unless-stopped
  43. healthcheck:
  44. 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)"]
  45. interval: 30s
  46. timeout: 5s
  47. retries: 3
  48. prometheus:
  49. image: prom/prometheus:latest
  50. volumes:
  51. - ./prometheus.yml:/etc/prometheus/prometheus.yml
  52. - prometheus-data:/prometheus
  53. networks:
  54. - cfc-net
  55. restart: unless-stopped
  56. profiles:
  57. - monitoring
  58. networks:
  59. cfc-net:
  60. volumes:
  61. langgraph-data:
  62. prometheus-data: