playbooks/roles/vhosts/apisix_service/files/scripts/healthcheck.sh

37 lines
1.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
ENV_FILE="${ROOT_DIR}/.env"
COMPOSE_FILE="${ROOT_DIR}/docker-compose.yml"
CADDY_FRAGMENT="/etc/caddy/conf.d/api.svc.plus.caddy"
if [[ -f "$ENV_FILE" ]]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
: "${API_PUBLIC_HOST:=api.svc.plus}"
: "${AI_GATEWAY_ACCESS_TOKEN:?missing AI_GATEWAY_ACCESS_TOKEN in ${ENV_FILE}}"
for file in "$COMPOSE_FILE" "$CADDY_FRAGMENT"; do
[[ -f "$file" ]] || {
printf '[svc-ai-gateway] missing file: %s\n' "$file" >&2
exit 1
}
done
caddy validate --adapter caddyfile --config "$CADDY_FRAGMENT" >/dev/null
systemctl is-active --quiet caddy
docker compose -f "$COMPOSE_FILE" ps --status running apisix >/dev/null
curl --fail --silent --show-error \
--resolve "${API_PUBLIC_HOST}:443:127.0.0.1" \
-H "Authorization: Bearer ${AI_GATEWAY_ACCESS_TOKEN}" \
"https://${API_PUBLIC_HOST}/v1/models" >/dev/null
printf '[svc-ai-gateway] healthcheck passed\n'