This directory contains the reproducible deployment files for the local Milvus Cluster and its monitoring stack.
deployments/
|-- milvus-cluster/ Milvus v2.6.21 distributed deployment
\-- monitoring/ Prometheus, Grafana, and cAdvisor
The complete local environment contains:
| Group | Containers |
|---|---|
| Milvus Cluster | milvus-cluster-etcd, milvus-cluster-minio, milvus-cluster-mixcoord, milvus-cluster-proxy, milvus-cluster-streamingnode, milvus-cluster-datanode, milvus-cluster-querynode |
| Monitoring | milvus-prometheus, milvus-grafana, milvus-cadvisor |
| Management UI | attu |
The old milvus-standalone container is retained only as a backup of the
previous environment. Keep it stopped while the Cluster is running because
both deployments use ports 19530 and 9091.
First, start Docker Desktop and wait until its Docker Engine is ready. Then open PowerShell and run:
Set-Location D:\IdeaProjects\milvus-lab
.\deployments\milvus-cluster\start.ps1
docker start attu
docker compose -f .\deployments\monitoring\docker-compose.yml up -dThis order is recommended because:
- the Cluster startup script creates the shared
milvus-labDocker network; - it starts etcd and MinIO before starting the Milvus components;
- Attu connects to the Cluster through
host.docker.internal:19530; - Prometheus starts after the Cluster and scrapes all Milvus components.
These commands are idempotent. It is safe to run them when the containers are already running.
The Milvus Cluster and monitoring containers use the unless-stopped restart
policy. If Docker Desktop starts automatically with Windows, they will
normally recover automatically.
The existing attu container does not have an automatic restart policy.
Start it manually after a reboot:
docker start attuRunning the complete startup sequence is still recommended because it verifies the expected Compose configuration and waits for every Milvus Cluster container to become healthy.
Check the Cluster and its resource usage:
.\deployments\milvus-cluster\status.ps1All seven Cluster containers should show healthy.
Check the monitoring stack:
docker compose -f .\deployments\monitoring\docker-compose.yml psExpected monitoring containers:
milvus-prometheus
milvus-grafana
milvus-cadvisor
Check all currently running containers:
docker psCheck the Milvus Proxy health endpoint:
Invoke-WebRequest -UseBasicParsing http://localhost:9091/healthzAn HTTP 200 response means the Proxy is healthy.
| Service | Address |
|---|---|
| Milvus SDK | http://localhost:19530 |
| Attu | http://localhost:3000 |
| Milvus WebUI | http://localhost:9091/webui/ |
| Jaeger Trace UI | http://localhost:16686 |
| MinIO Console | http://localhost:9001 |
| Prometheus | http://localhost:9090 |
| Prometheus targets | http://localhost:9090/targets |
| Grafana | http://localhost:3001 |
| Milvus Cluster dashboard | http://localhost:3001/d/milvus-cluster-local/milvus-cluster-local |
| cAdvisor | http://localhost:8080 |
Milvus authentication is disabled in this local environment.
Stop the Cluster while retaining all data:
.\deployments\milvus-cluster\stop.ps1Stop monitoring while retaining Prometheus and Grafana data:
docker compose -f .\deployments\monitoring\docker-compose.yml downStop Attu:
docker stop attuDo not add --volumes to either Compose down command unless the stored data
should be permanently deleted.
Confirm that the old Standalone container is stopped:
docker stop milvus-standalone
.\deployments\milvus-cluster\start.ps1docker start attu
docker logs attu --tail 50Attu should connect to host.docker.internal:19530.
Start the Cluster first, then verify its health:
.\deployments\milvus-cluster\start.ps1
.\deployments\milvus-cluster\status.ps1Prometheus retries failed targets automatically; no metrics data needs to be deleted.