fix: check.sh — не падать до docker compose, проверка после старта

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-16 17:38:35 +03:00
parent 5c1be7da21
commit b6d97f8a73
6 changed files with 151 additions and 36 deletions
Regular → Executable
+64 -5
View File
@@ -1,8 +1,67 @@
#!/bin/sh
set -e
cd "$(dirname "$0")"
if command -v go >/dev/null 2>&1; then
go run ./cmd/check
else
docker run --rm -v "$(pwd):/app" -w /app golang:1.22-alpine go run ./cmd/check
fi
MODE="${1:-pre}"
host_docker_check() {
if command -v docker >/dev/null 2>&1; then
if docker version >/dev/null 2>&1; then
echo " ✓ docker: $(docker version --format '{{.Server.Version}}' 2>/dev/null || docker --version)"
else
echo " ! docker: установлен, но демон недоступен (запустите docker)"
fi
if docker compose version >/dev/null 2>&1; then
echo " ✓ docker_compose: $(docker compose version --short 2>/dev/null || docker compose version)"
else
echo " ! docker_compose: не найден"
fi
else
echo " ! docker: не найден на хосте"
echo " ! docker_compose: не найден на хосте"
fi
}
run_go_check() {
if command -v go >/dev/null 2>&1; then
CHECK_HOST_TOOLS=1 "$@" go run ./cmd/check
else
CHECK_HOST_TOOLS=0 "$@" docker run --rm -v "$(pwd):/app" -w /app golang:1.22-alpine go run ./cmd/check
fi
}
post_start_check() {
echo "=== Проверка после запуска ==="
host_docker_check
echo ""
if docker compose ps 2>/dev/null | grep -qE 'shop-app|running'; then
if docker compose exec -T app wget -qO- http://127.0.0.1:8080/health 2>/dev/null; then
echo ""
echo " ✓ app /health: OK"
fi
elif command -v curl >/dev/null 2>&1; then
if curl -sf "http://127.0.0.1:${HTTP_PORT:-80}/health" 2>/dev/null; then
echo ""
echo " ✓ /health: OK"
else
echo " ✗ /health: сервис не отвечает — проверьте: docker compose ps"
exit 1
fi
fi
CHECK_SKIP_DB=0 CHECK_HOST_TOOLS=1 run_go_check
}
case "$MODE" in
--after-start|post)
post_start_check
;;
*)
echo "=== Проверка перед запуском (БД будет проверена после docker compose) ==="
host_docker_check
echo ""
CHECK_SKIP_DB=1 run_go_check
echo ""
echo "Далее: docker compose up --build -d"
echo "Затем: ./check.sh --after-start"
;;
esac