-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathstart-qdrant.ps1
More file actions
118 lines (108 loc) · 3.56 KB
/
Copy pathstart-qdrant.ps1
File metadata and controls
118 lines (108 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Start Qdrant Vector Database
# Requires Docker Desktop installed
$ErrorActionPreference = "Stop"
$containerName = "qdrant"
$dbPath = Join-Path $PSScriptRoot "db"
# Check if Qdrant is already running
Write-Host "Checking if Qdrant is already running..."
try {
$response = Invoke-WebRequest -Uri "http://localhost:6333/readyz" -UseBasicParsing -TimeoutSec 2 -ErrorAction SilentlyContinue
if ($response.StatusCode -eq 200) {
Write-Host "Qdrant is already running!"
Write-Host "Opening Qdrant Dashboard in browser..."
Start-Process "http://localhost:6333/dashboard"
Write-Host ""
Write-Host "Qdrant is running:"
Write-Host " - HTTP API: http://localhost:6333"
Write-Host " - gRPC API: localhost:6334"
Write-Host " - Dashboard: http://localhost:6333/dashboard"
exit 0
}
}
catch {
# Qdrant not running, continue with startup
}
# Ensure db directory exists
if (-not (Test-Path $dbPath)) {
Write-Host "Creating database directory: $dbPath"
New-Item -ItemType Directory -Path $dbPath | Out-Null
}
# Check if Docker is running
Write-Host "Checking Docker status..."
$dockerInfo = docker info 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Host "Docker is not running. Starting Docker Desktop..."
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"
# Wait for Docker to be ready
$maxWait = 60
$waited = 0
while ($waited -lt $maxWait) {
Start-Sleep -Seconds 2
$waited += 2
$dockerInfo = docker info 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host "Docker is now running."
break
}
Write-Host "Waiting for Docker to start... ($waited seconds)"
}
if ($LASTEXITCODE -ne 0) {
Write-Error "Docker failed to start within $maxWait seconds."
exit 1
}
}
else {
Write-Host "Docker is already running."
}
# Check if container already exists
$existingContainer = docker ps -a --filter "name=^${containerName}$" --format "{{.Names}}" 2>&1
if ($existingContainer -eq $containerName) {
# Check if it's running
$runningContainer = docker ps --filter "name=^${containerName}$" --format "{{.Names}}" 2>&1
if ($runningContainer -eq $containerName) {
Write-Host "Qdrant container is already running."
}
else {
Write-Host "Starting existing Qdrant container..."
docker start $containerName
}
}
else {
Write-Host "Creating and starting Qdrant container..."
docker run -d `
--name $containerName `
-p 6333:6333 `
-p 6334:6334 `
-v "${dbPath}:/qdrant/storage:z" `
qdrant/qdrant:latest
}
# Wait for Qdrant to be ready
Write-Host "Waiting for Qdrant to be ready..."
$maxWait = 30
$waited = 0
while ($waited -lt $maxWait) {
Start-Sleep -Seconds 1
$waited++
try {
$response = Invoke-WebRequest -Uri "http://localhost:6333/readyz" -UseBasicParsing -TimeoutSec 2 -ErrorAction SilentlyContinue
if ($response.StatusCode -eq 200) {
Write-Host "Qdrant is ready!"
break
}
}
catch {
# Still starting up
}
}
# Open browser with Qdrant UI
Write-Host "Opening Qdrant Dashboard in browser..."
Start-Process "http://localhost:6333/dashboard"
Write-Host ""
Write-Host "Qdrant is running:"
Write-Host " - HTTP API: http://localhost:6333"
Write-Host " - gRPC API: localhost:6334"
Write-Host " - Dashboard: http://localhost:6333/dashboard"
Write-Host " - Database: $dbPath"
Write-Host ""
Write-Host "To stop: docker stop $containerName"
Write-Host "To remove: docker rm $containerName"