Files
Blizzard 6b45adbbd2 chore(deploy): 三机部署 compose 拆分 + NATS 3 节点集群
126=MinIO(已部署)、128=基础设施、132=应用。

- deploy/128-infra:NATS 3 节点集群(独立卷+cluster routes,暴露4222/4223/4224)+PG/Redis/
  Milvus(自带etcd+自带内部minio,不复用126)/Neo4j/Jaeger;端口对局域网暴露、卷持久化。
- deploy/nats-cluster/nats{1,2,3}.conf:max_payload 一致 + jetstream + cluster。
- deploy/132-app:仅 gateway(3000:8080)+dispatcher+mcp-go+mcp-py,无 admin nginx;env 指向
  126/128;mcp-go 补齐 MINIO env(本会话 blob 遗漏);NATS_STREAM_REPLICAS=3;.env.example 模板。
- docker-compose.prod.yml(单机):删 admin 服务(已内嵌)、mcp-go 补 MINIO env。
- 三个 compose 均 docker compose config 校验通过;.env 已 gitignore、.env.example 可提交。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 14:45:24 +08:00

135 lines
4.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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=3durable 流才有 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: