-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrestart-service-n-times.sh
More file actions
executable file
·47 lines (38 loc) · 1.43 KB
/
Copy pathrestart-service-n-times.sh
File metadata and controls
executable file
·47 lines (38 loc) · 1.43 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
#!/usr/bin/env bash
# === Проверка аргументов ===
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <service_name> <restarts_count> <readiness_url>"
echo "Example: $0 petclinic-aot 20 http://localhost:8091/actuator/health/readiness"
exit 1
fi
SERVICE_NAME="$1"
RESTART_COUNT="$2"
READINESS_URL="$3"
# Максимальное время ожидания (в секундах) для readiness после рестарта
MAX_WAIT=60
SLEEP_BETWEEN_CHECKS=2
# === Основной цикл ===
for i in $(seq 1 "$RESTART_COUNT"); do
echo "🔁 Restart #$i: restarting service '$SERVICE_NAME'..."
# Перезапуск сервиса в docker compose
docker compose restart "$SERVICE_NAME"
if [ $? -ne 0 ]; then
echo "❌ Ошибка при перезапуске сервиса '$SERVICE_NAME'"
exit 1
fi
echo "⏳ Ожидание readiness по адресу: $READINESS_URL"
# Ждём readiness
SECONDS_WAITED=0
until curl -fs "$READINESS_URL" | grep -q '"status":"UP"'; do
sleep "$SLEEP_BETWEEN_CHECKS"
SECONDS_WAITED=$((SECONDS_WAITED + SLEEP_BETWEEN_CHECKS))
if [ "$SECONDS_WAITED" -ge "$MAX_WAIT" ]; then
echo "❌ Таймаут ожидания readiness ($MAX_WAIT сек)!"
exit 1
fi
done
echo "✅ Сервис '$SERVICE_NAME' готов (readiness OK)"
sleep "5"
echo
done
echo "🎉 Все $RESTART_COUNT рестартов завершены успешно!"