11633fbe6e
Co-authored-by: Cursor <cursoragent@cursor.com>
89 lines
2.5 KiB
Bash
Executable File
89 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
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
|
|
}
|
|
|
|
load_env() {
|
|
if [ -f .env ]; then
|
|
set -a
|
|
# shellcheck disable=SC1091
|
|
. ./.env
|
|
set +a
|
|
fi
|
|
}
|
|
|
|
post_start_check() {
|
|
echo "=== Проверка после запуска ==="
|
|
load_env
|
|
host_docker_check
|
|
echo ""
|
|
|
|
if docker compose ps postgres 2>/dev/null | grep -qi running; then
|
|
if docker compose exec -T postgres pg_isready -U "${POSTGRES_USER:-shop}" -d "${POSTGRES_DB:-shopdb}" >/dev/null 2>&1; then
|
|
echo " ✓ postgresql: готова"
|
|
else
|
|
echo " ✗ postgresql: не отвечает"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo " ✗ postgres: контейнер не запущен — docker compose up -d"
|
|
exit 1
|
|
fi
|
|
|
|
if command -v curl >/dev/null 2>&1; then
|
|
if curl -sf "http://127.0.0.1:${HTTP_PORT:-80}/health" >/dev/null 2>&1; then
|
|
echo " ✓ /health: OK"
|
|
else
|
|
echo " ✗ /health: не отвечает — docker compose logs app caddy"
|
|
exit 1
|
|
fi
|
|
elif docker compose exec -T app wget -qO- http://127.0.0.1:8080/health >/dev/null 2>&1; then
|
|
echo " ✓ app /health: OK"
|
|
fi
|
|
|
|
echo ""
|
|
CHECK_SKIP_DB=1 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
|