services: api: build: context: .. dockerfile: docker/api.Dockerfile container_name: api-prod working_dir: /app volumes: - ../src:/app/src - ../saves:/app/saves - /hdd/zwj/models:/hdd/zwj/models ports: - "8000:8000" depends_on: - graph - milvus networks: - app-network environment: - NEO4J_URI=bolt://graph:7687 - NEO4J_USERNAME=neo4j - NEO4J_PASSWORD=0123456789 - MILVUS_URI=http://milvus:19530 command: uvicorn src.main:app --host 0.0.0.0 --port 8000 # 前端服务 web: build: context: .. dockerfile: docker/web.Dockerfile target: production container_name: web-prod ports: - "80:80" depends_on: - api networks: - app-network environment: - NODE_ENV=production - VITE_API_URL=http://api:8000 # 添加这行 # Neo4j 图数据库服务 graph: image: neo4j:latest container_name: graph-prod ports: - "7474:7474" - "7687:7687" volumes: - ./volumes/neo4j/data:/data - ./volumes/neo4j/logs:/var/lib/neo4j/logs environment: - NEO4J_AUTH=neo4j/0123456789 networks: - app-network etcd: container_name: milvus-etcd-prod image: quay.io/coreos/etcd:v3.5.5 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ./volumes/milvus/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 networks: - app-network minio: container_name: milvus-minio-prod image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ./volumes/milvus/minio:/minio_data command: minio server /minio_data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 networks: - app-network # Milvus 服务 milvus: image: milvusdb/milvus:latest container_name: milvus-standalone-prod command: ["milvus", "run", "standalone"] security_opt: - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ./volumes/milvus/milvus:/var/lib/milvus healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" networks: - app-network # 定义网络 networks: app-network: driver: bridge