您是正确的,端口映射应该是 主机端口:容器端口 的格式。以下是修正后的完整 docker-compose.yml 文件,包含正确的 ETCD 端口映射和相应配置调整:

version: '3.5'

services:
  milvus-etcd:
    container_name: milvus-etcd
    hostname: milvus-etcd
    restart: always
    image: oceanx/mirrored-coreos-etcd:v3.5.18
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - /var/www/OceanXCommon/milvus-etcd:/etcd
    ports:
      - "12379:2379"  # 主机12379映射到容器2379
      - "12380:2380"  # 主机12380映射到容器2380
    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

  minio:
    container_name: minio
    image: oceanx/minio:RELEASE-2025-03-12-18-04-18
    hostname: minio
    restart: always
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - /var/www/OceanXCommon/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  milvus-db:
    container_name: milvus-db
    image: oceanx/milvus:v2.5.7
    hostname: milvus-db
    restart: always
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: milvus-etcd:2379  # 容器间通信使用容器原生端口
      MINIO_ADDRESS: minio:9000
    volumes:
      - /var/www/OceanXCommon/milvus-db:/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:
      - "milvus-etcd"
      - "minio"

networks:
  default:
    name: milvus

关键修正说明:

  1. 端口映射:调整为 "12379:2379""12380:2380"(主机端口:容器端口)
  2. ETCD配置
    • command 保持使用容器原生端口 2379/2380
    • ETCD_ENDPOINTS 保持 milvus-etcd:2379(容器间通信)
  3. 访问方式
    • 外部访问ETCD:localhost:12379
    • 容器内部访问ETCD:milvus-etcd:2379

这样配置后,所有组件都能正确通信且端口映射清晰。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐