本人使用的是京東云服務器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