version: "3.8" services: cfc-backend: build: context: ../cfc-backend dockerfile: Dockerfile ports: - "9082:9082" environment: - SPRING_PROFILES_ACTIVE=prod - python.enabled=true - python.base-url=http://langgraph-svc:9000 networks: - cfc-net restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9082/actuator/health"] interval: 30s timeout: 5s retries: 3 langgraph-svc: image: cfc-langgraph-langgraph-svc:v7 build: context: . dockerfile: Dockerfile ports: - "9000:9000" env_file: - .env.production environment: - JAVA_BASE_URL=http://172.17.0.1:9082 - JAVA_CONTEXT_URL=http://172.17.0.1:9082/api/ai/context - CHROMA_DB_PATH=/data/chroma_db - JSON_LOGS=true # LangSmith 三个变量从 env_file (.env.production) 读取,不再覆盖 volumes: # 共享 Java 文件上传目录(LangGraph 读取已上传的 PDF 文件) - /data/cfc-uploads:/data/cfc-uploads # Chroma 向量数据库持久化 - langgraph-data:/data/chroma_db networks: - cfc-net restart: unless-stopped healthcheck: 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)"] interval: 30s timeout: 5s retries: 3 prometheus: image: prom/prometheus:latest volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus networks: - cfc-net restart: unless-stopped profiles: - monitoring networks: cfc-net: volumes: langgraph-data: prometheus-data: