#!/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 } 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