53 lines
1.5 KiB
Bash
53 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# Проверка контура: сервисы запущены, образ бота — ожидаемый, миграции применены.
|
|
# Использование: ./scripts/check_contour.sh [test|prod]
|
|
set -euo pipefail
|
|
|
|
E="${1:-test}"
|
|
FILE="env/${E}.env"
|
|
|
|
if [ ! -f "$FILE" ]; then
|
|
echo "Нет файла окружения: $FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
COMPOSE="docker compose -p ${E} --env-file ${FILE} -f docker-compose.prod.yml"
|
|
|
|
echo "== контур: ${E} =="
|
|
$COMPOSE ps
|
|
|
|
echo
|
|
echo "== образы =="
|
|
$COMPOSE images
|
|
|
|
echo
|
|
echo "== проверки =="
|
|
|
|
running="$($COMPOSE ps --services --status running || true)"
|
|
fail=0
|
|
for svc in postgres bot; do
|
|
if echo "$running" | grep -qx "$svc"; then
|
|
echo "OK ${svc}: running"
|
|
else
|
|
echo "FAIL ${svc}: не запущен" >&2
|
|
fail=1
|
|
fi
|
|
done
|
|
|
|
# миграции: сервис migrate должен завершиться успешно (Exited (0))
|
|
if $COMPOSE ps -a --format '{{.Service}} {{.Status}}' | grep -q '^migrate Exited (0)'; then
|
|
echo "OK migrate: завершён успешно"
|
|
else
|
|
echo "WARN migrate: нет подтверждённого успешного завершения (см. 'logs migrate')" >&2
|
|
fi
|
|
|
|
# БД отвечает
|
|
if $COMPOSE exec -T postgres sh -lc 'pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB"' >/dev/null 2>&1; then
|
|
echo "OK postgres: принимает соединения"
|
|
else
|
|
echo "FAIL postgres: не отвечает" >&2
|
|
fail=1
|
|
fi
|
|
|
|
exit $fail
|