本人使用的是京东云服务器docker配置milvus
参考教程:https://blog.csdn.net/withme977/article/details/137270087
需要注意:虚拟机安装
pymilvus
和docker安装milvus
版本需要对应,否则会出现connection失败问题
查看虚拟机pymilvus
版本:pip show pymilvus
查看docker安装milvus
版本:docker-compose.yml
所以,你按照我的版本配置就不会出现问题
首先确保安装了docker
、docker compose
docker -- version
docker-compose --version
milvus安装
创建milvus工作目录
mkdir milvus
# 进入到新建的目录
cd milvus
接下来需要下载docker-compose.yml
: (暂时不用milvus.yml
文件:milvus.yml
)
下载docker-compose.yml
,或者你也可以直接用我提供的代码:
# CPU单机版
wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose.yml -O docker-compose.yml
# GPU单机版
wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml
# docker-compose.yml(CPU)
version: '3.5'services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.16environment:- ETCD_AUTO_COMPACTION_MODE=revision- ETCD_AUTO_COMPACTION_RETENTION=1000- ETCD_QUOTA_BACKEND_BYTES=4294967296- ETCD_SNAPSHOT_COUNT=50000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcdcommand: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcdhealthcheck:test: ["CMD", "etcdctl", "endpoint", "health"]interval: 30stimeout: 20sretries: 3minio:container_name: milvus-minioimage: minio/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminports:- "19530:19530"- "9091:9091"volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_datacommand: minio server /minio_data --console-address ":9001"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3standalone:container_name: milvus-standaloneimage: milvusdb/milvus:v2.5.4command: ["milvus", "run", "standalone"]security_opt:- seccomp:unconfinedenvironment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvushealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]interval: 30sstart_period: 90stimeout: 20sretries: 3ports:- "9001:9001"- "19531:19530"depends_on:- "etcd"- "minio"networks:default:name: milvus
注:默认数据挂载在这个目录下:
volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
下载 (目前不用搞这个)milvus.yml
文件,或者你也可以直接用我的:
# 注意改成自己对应的milvus版本号
wget https://raw.githubusercontent.com/milvus-io/milvus/v2.3.5/configs/milvus.yaml
启动:
# 拉取镜像
docker-compose pull
# 启动容器
docker-compose up -d
# 查看启动状态(健康状态)
docker-compose ps -a
开启防火墙端口(本人使用的是京东云,如果你使用别的,只需查找相应方法就可以):
测试本地是否能够连接milvus:
from pymilvus import connections, utility
import timedef test_connection(host, port, retries=3, delay=2):"""测试 Milvus 连接Args:host: Milvus 服务器地址port: Milvus 服务器端口retries: 重试次数delay: 重试间隔(秒)"""for attempt in range(retries):try:print(f"\n尝试连接 Milvus ({attempt + 1}/{retries})...")print(f"连接地址: {host}:{port}")# 尝试连接connections.connect(alias="default",host=host,port=port,timeout=10, # 设置超时时间为 10 秒user="root", # 或者配置文件中的用户名password="Milvus" # 默认密码,如果你没有修改)# 获取服务器版本version = utility.get_server_version()print("✅ 连接成功!")print(f"Milvus 版本: {version}")# 列出所有集合collections = utility.list_collections()print(f"可用集合: {collections}")# 断开连接connections.disconnect("default")return Trueexcept Exception as e:print(f"❌ 连接失败 (尝试 {attempt + 1}/{retries}):")print(f"错误信息: {str(e)}")if attempt < retries - 1:print(f"等待 {delay} 秒后重试...")time.sleep(delay)else:print("\n所有重试都失败了。请检查:")print("1. Milvus 服务是否正在运行")print("2. 服务器地址和端口是否正确")print("3. 网络连接是否正常")print("4. 防火墙设置是否允许该连接")return Falseif __name__ == "__main__":# 测试远程连接print("\n=== 测试远程连接 ===")test_connection("117.72.38.155", "19531")
更换端口号
如果你想修改端口号,可以在docker-compose.yml
中进行修改ports
部分内容:
ports:- "9001:9001"- "19531:19530"
然后执行:
docker-compose down # 停止并删除旧容器(不会删除镜像和数据)
docker-compose up -d # 使用新配置重新启动容器
更换milvus版本
删除旧容器与数据,需要进入旧的docker-compose.yml
目录下:
docker-compose down -v
拉取新版 Milvus 2.5.4 的 Docker Compose 配置:
wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose.yml -O docker-compose.yml
启动新版本:
docker-compose up -d