# sundynix-agentix · 基础设施机 192.168.100.128 # # cd deploy/128-infra && cp .env.example .env # 填库密码 # docker compose up -d # # 说明: # - 对象存储 MinIO 已单独部署在 192.168.100.126,本机不含业务 MinIO; # 这里的 milvus-minio 仅供 Milvus 自己存段文件(内部网络,不对外)。 # - 端口对局域网暴露(0.0.0.0),供应用机 192.168.100.132 连接。 # ⚠️ Redis / Milvus / NATS 无认证,务必用防火墙只放行 132/126 网段,勿对公网开放。 # - NATS 三节点集群(JetStream Raft):单机多容器,各自独立卷;对 132 暴露 4222/4223/4224。 # 应用侧设 NATS_STREAM_REPLICAS=3,durable 流才有 quorum 容错。 # - 全部卷持久化 + restart:unless-stopped,容器损坏/重启不丢数据。 services: # ---------- NATS 3 节点集群 ---------- nats1: image: nats:2-alpine command: ["-c", "/etc/nats/nats-server.conf"] restart: unless-stopped volumes: - ../nats-cluster/nats1.conf:/etc/nats/nats-server.conf:ro - nats1_data:/data/jetstream ports: ["4222:4222", "8222:8222"] # 客户端 + 监控 nats2: image: nats:2-alpine command: ["-c", "/etc/nats/nats-server.conf"] restart: unless-stopped volumes: - ../nats-cluster/nats2.conf:/etc/nats/nats-server.conf:ro - nats2_data:/data/jetstream ports: ["4223:4222"] nats3: image: nats:2-alpine command: ["-c", "/etc/nats/nats-server.conf"] restart: unless-stopped volumes: - ../nats-cluster/nats3.conf:/etc/nats/nats-server.conf:ro - nats3_data:/data/jetstream ports: ["4224:4222"] # ---------- 关系库 / 缓存 ---------- postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: sundynix POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?需在 .env 设置} POSTGRES_DB: sundynix volumes: ["pg_data:/var/lib/postgresql/data"] ports: ["5432:5432"] healthcheck: test: ["CMD-SHELL", "pg_isready -U sundynix"] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine restart: unless-stopped volumes: ["redis_data:/data"] ports: ["6379:6379"] # ---------- 向量库 Milvus(自带 etcd + 自带内部 minio,不复用 126)---------- milvus-etcd: image: quay.io/coreos/etcd:v3.5.14 restart: unless-stopped environment: ETCD_AUTO_COMPACTION_MODE: revision ETCD_AUTO_COMPACTION_RETENTION: "1000" ETCD_QUOTA_BACKEND_BYTES: "4294967296" ETCD_SNAPSHOT_COUNT: "50000" command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd volumes: ["milvus_etcd:/etcd"] milvus-minio: image: minio/minio:RELEASE.2023-03-20T20-16-18Z restart: unless-stopped environment: MINIO_ACCESS_KEY: minioadmin # Milvus 段存储专用,内部网络不对外 MINIO_SECRET_KEY: minioadmin command: minio server /minio_data volumes: ["milvus_minio_data:/minio_data"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 milvus: image: milvusdb/milvus:v2.4.13 command: ["milvus", "run", "standalone"] restart: unless-stopped environment: ETCD_ENDPOINTS: milvus-etcd:2379 MINIO_ADDRESS: milvus-minio:9000 volumes: ["milvus_data:/var/lib/milvus"] ports: ["19530:19530"] # 供 132 的 mcp-go 连接 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 15s timeout: 10s retries: 10 depends_on: [milvus-etcd, milvus-minio] # ---------- 图谱库 ---------- neo4j: image: neo4j:5-community restart: unless-stopped environment: NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:?需在 .env 设置} volumes: ["neo4j_data:/data"] ports: ["7687:7687", "7474:7474"] # bolt + 浏览器 # ---------- 链路追踪(可选,不需要可删)---------- jaeger: image: jaegertracing/all-in-one:1.60 restart: unless-stopped environment: COLLECTOR_OTLP_ENABLED: "true" ports: ["16686:16686", "4318:4318"] # UI + OTLP/HTTP 接收 volumes: nats1_data: nats2_data: nats3_data: pg_data: redis_data: milvus_etcd: milvus_minio_data: milvus_data: neo4j_data: