1. Milvus数据库部署

version: '3.5'
services:
  etcd:
    container_name: milvus-etcd
    image: docker.io/bitnami/etcd:3.5.5
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
      - ALLOW_NONE_AUTHENTICATION=yes
      # 关键修改:ETCD_ADVERTISE_CLIENT_URLS使用0.0.0.0以确保可从任何IP访问
      - ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    user: "1000:1000"  # 保留用户ID:组ID设置
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/bitnami/etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3
    restart: always  # 添加自动重启策略
    networks:
      - milvus
      
  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/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
    restart: always  # 添加自动重启策略
    networks:
      - milvus
      
  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.3.3
    command: ["milvus", "run", "standalone"]
    environment:
      - ETCD_ENDPOINTS=etcd:2379
      - MINIO_ADDRESS=minio:9000
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"
    # 添加DNS配置,确保etcd名称解析正确
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: always  # 添加自动重启策略
    networks:
      - milvus

networks:
  milvus:
    name: milvus
    driver: bridge

创建文件夹, 并授予权限(很重要)

# 创建新的目录结构
sudo mkdir -p ./volumes/etcd ./volumes/minio ./volumes/milvus

# 设置正确的权限
sudo chmod -R 777 ./volumes

执行命令进行部署

sudo docker-compose up -d

检查是否成功

# 查看容器状态
sudo docker ps

# 查看etcd日志
sudo docker logs milvus-etcd

# 查看Milvus日志
sudo docker logs milvus-standalone

2. 本地电脑进行测试

from pymilvus import connections, utility

try:
    # 连接到 Milvus 服务器  host: 修改为虚拟机ip
    connections.connect("default", host="192.168.10.131", port="19530")

    # 获取服务器版本
    version = utility.get_server_version()
    print(f"连接成功!Milvus 版本: {version}")

    # 列出所有集合
    collections = utility.list_collections()
    print(f"当前集合: {collections}")

    # 断开连接
    connections.disconnect("default")
    print("测试完成,Milvus 运行正常")

except Exception as e:
    print(f"连接失败: {e}")
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐