-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker.ps1
More file actions
157 lines (135 loc) · 6.05 KB
/
docker.ps1
File metadata and controls
157 lines (135 loc) · 6.05 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
param(
[Parameter(Position = 0)]
[string]$Command = "help"
)
function Show-Help {
Write-Host @"
Использование: .\docker.ps1 [команда]
Доступные команды:
start - Запустить бота и MongoDB в Docker
stop - Остановить контейнеры
restart - Перезапустить контейнеры
logs - Показать логи бота
logs-mongo - Показать только логи MongoDB
build - Пересобрать Docker образ
status - Показать статус контейнеров
shell - Войти в shell контейнера бота
mongo-shell - Войти в MongoDB shell (mongosh)
clear - Полностью удалить контейнеры, образы и volumes
clear-cache - Очистить кеш tooltip_html (loot_tooltip_cache)
help - Показать эту справку
"@
}
function Start-Bot {
Write-Host "🚀 Запуск бота и MongoDB..." -ForegroundColor Green
Write-Host "ℹ️ MongoDB будет доступна на порту 27017" -ForegroundColor Cyan
docker compose up -d
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Бот и MongoDB успешно запущены!" -ForegroundColor Green
Write-Host "Для просмотра логов используйте: .\docker.ps1 logs" -ForegroundColor Cyan
}
}
function Stop-Bot {
Write-Host "🛑 Остановка бота и MongoDB..." -ForegroundColor Yellow
docker compose stop
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Бот и MongoDB остановлены!" -ForegroundColor Green
}
}
function Restart-Bot {
Write-Host "🔄 Перезапуск бота и MongoDB..." -ForegroundColor Yellow
docker compose restart
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Бот и MongoDB перезапущены!" -ForegroundColor Green
}
}
function Show-Logs {
Write-Host "🤖 Логи бота (Ctrl+C для выхода):" -ForegroundColor Cyan
docker compose logs -f --tail=100 yui-bot
}
function Show-MongoLogs {
Write-Host "🍃 Логи MongoDB (Ctrl+C для выхода):" -ForegroundColor Cyan
docker compose logs -f --tail=100 mongodb
}
function Build-Image {
Write-Host "🔨 Пересборка Docker образа..." -ForegroundColor Yellow
docker compose build --no-cache
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Образ успешно пересобран!" -ForegroundColor Green
Write-Host "Для запуска используйте: .\docker.ps1 start" -ForegroundColor Cyan
}
}
function Show-Status {
Write-Host "📊 Статус контейнера:" -ForegroundColor Cyan
docker compose ps
}
function Enter-Shell {
Write-Host "💻 Вход в shell контейнера бота..." -ForegroundColor Cyan
docker compose exec yui-bot sh
}
function Enter-MongoShell {
Write-Host "🍃 Вход в MongoDB shell..." -ForegroundColor Cyan
Write-Host "Используйте команды MongoDB. Для выхода: exit" -ForegroundColor Yellow
docker compose exec mongodb mongosh -u admin -p password --authenticationDatabase admin
}
function Clear-LootTooltipCache {
$mongoDb = "admin"
if (Test-Path .env) {
$dbLine = Get-Content .env | Where-Object { $_ -match '^DB_AUTH_SOURCE=' } | Select-Object -Last 1
if ($dbLine) {
$mongoDb = ($dbLine -split '=', 2)[1].Trim()
}
}
Write-Host "🧹 Очистка кеша tooltip_html (loot_tooltip_cache) в БД '$mongoDb'..." -ForegroundColor Yellow
$mongoEval = "db.getSiblingDB('${mongoDb}').getCollection('loot_tooltip_cache').deleteMany({})"
docker compose exec mongodb mongosh -u admin -p password --authenticationDatabase admin --quiet --eval $mongoEval
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Кеш tooltip_html очищен!" -ForegroundColor Green
}
}
function Clear-All {
Write-Host "⚠️ ВНИМАНИЕ: Эта операция полностью удалит контейнеры, образы и все данные (volumes)!" -ForegroundColor Red
$confirmation = Read-Host "Вы уверены? Введите 'yes' для подтверждения"
if ($confirmation -ne "yes") {
Write-Host "❌ Операция отменена" -ForegroundColor Yellow
return
}
Write-Host "🧹 Очистка контейнеров, образов и volumes..." -ForegroundColor Yellow
docker compose down -v
docker image prune -f
docker rmi yui-yui-bot 2>$null
Write-Host "🧹 Очистка кеша Docker..." -ForegroundColor Yellow
docker builder prune -f
Write-Host "✅ Полная очистка завершена!" -ForegroundColor Green
}
if (-not (Get-Command docker -ErrorAction SilentlyContinue)) {
Write-Host "❌ Docker не установлен! Установите Docker Desktop." -ForegroundColor Red
exit 1
}
$validCommands = @("start", "stop", "restart", "logs", "logs-mongo", "build", "status", "shell", "mongo-shell", "clear", "clear-cache", "help")
if ($Command -notin $validCommands) {
Write-Host "❌ Неизвестная команда: $Command" -ForegroundColor Red
Write-Host ""
Show-Help
exit 1
}
if ($Command -ne "help" -and -not (Test-Path .env)) {
Write-Host "⚠️ Файл .env не найден!" -ForegroundColor Yellow
Write-Host "Скопируйте .env.example в .env и заполните необходимые параметры:" -ForegroundColor Cyan
Write-Host " cp .env.example .env" -ForegroundColor White
exit 1
}
switch ($Command) {
"start" { Start-Bot }
"stop" { Stop-Bot }
"restart" { Restart-Bot }
"logs" { Show-Logs }
"logs-mongo" { Show-MongoLogs }
"build" { Build-Image }
"status" { Show-Status }
"shell" { Enter-Shell }
"mongo-shell" { Enter-MongoShell }
"clear" { Clear-All }
"clear-cache" { Clear-LootTooltipCache }
"help" { Show-Help }
}