fix(ops): проверка готовности учитывает адрес привязки приложения
`glchat update` на стенде с внешним прокси всегда сообщал «приложение не поднялось»: readyz проверялся на 127.0.0.1, а приложение слушает адрес в WireGuard (GLCHAT_APP_BIND). Тот же дефект был в restore.sh и в `glchat status` (health показывался как unreachable). Добавлен общий помощник app_check_url.
This commit is contained in:
+14
-2
@@ -9,6 +9,16 @@ ENV_FILE="${GLCHAT_ETC_DIR}/.env"
|
||||
|
||||
COMPOSE="docker compose -f ${COMPOSE_FILE}"
|
||||
|
||||
# app_check_url печатает адрес /readyz с учётом привязки приложения: во внешнем
|
||||
# режиме оно слушает WireGuard-адрес, и проверка localhost всегда падала бы.
|
||||
app_check_url() {
|
||||
local port="$1" host="${2:-}"
|
||||
case "$host" in
|
||||
0.0.0.0 | "" | "::") host="127.0.0.1" ;;
|
||||
esac
|
||||
printf 'http://%s:%s/readyz' "$host" "$port"
|
||||
}
|
||||
|
||||
# env_get читает значение из .env инстанса (пусто, если ключа нет).
|
||||
env_get() {
|
||||
[ -f "$ENV_FILE" ] || return 0
|
||||
@@ -56,9 +66,11 @@ cmd_status() {
|
||||
echo "== compose =="
|
||||
$COMPOSE ps
|
||||
echo
|
||||
meta="$(curl -fsS "http://127.0.0.1:8080/api/v1/meta" 2>/dev/null || true)"
|
||||
local check_url
|
||||
check_url="$(app_check_url "${APP_PORT:-8080}" "$(env_get GLCHAT_APP_BIND)")"
|
||||
meta="$(curl -fsS "${check_url%/readyz}/api/v1/meta" 2>/dev/null || true)"
|
||||
version="$(printf '%s' "$meta" | sed -n 's/.*"version":"\([^"]*\)".*/\1/p')"
|
||||
health="$(curl -fsS "http://127.0.0.1:8080/readyz" 2>/dev/null || echo '{"status":"unreachable"}')"
|
||||
health="$(curl -fsS "${check_url}" 2>/dev/null || echo '{"status":"unreachable"}')"
|
||||
echo "== app =="
|
||||
echo "version: ${version:-unknown}"
|
||||
echo "readyz: ${health}"
|
||||
|
||||
Reference in New Issue
Block a user