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:
+15
-3
@@ -7,6 +7,16 @@ ENV_FILE="${GLCHAT_ETC_DIR}/.env"
|
||||
COMPOSE_FILE="${GLCHAT_ETC_DIR}/compose.yaml"
|
||||
REPO_DIR_DEFAULT="${GLCHAT_REPO_DIR:-/opt/glchat-src}"
|
||||
|
||||
# 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"
|
||||
}
|
||||
|
||||
log() { printf '[update] %s\n' "$*"; }
|
||||
die() {
|
||||
printf '[update] ошибка: %s\n' "$*" >&2
|
||||
@@ -72,16 +82,18 @@ fi
|
||||
log "применяем новую версию"
|
||||
(cd "$GLCHAT_ETC_DIR" && docker compose "${compose_args[@]}" up -d --remove-orphans) || die "не удалось поднять стек"
|
||||
|
||||
log "ожидаем готовности (миграции выполняются на старте приложения)"
|
||||
READY_URL="$(app_check_url "${APP_PORT:-8080}" "${GLCHAT_APP_BIND:-}")"
|
||||
|
||||
log "ожидаем готовности ${READY_URL} (миграции выполняются на старте приложения)"
|
||||
for _ in $(seq 1 45); do
|
||||
if curl -fsS "http://127.0.0.1:${APP_PORT:-8080}/readyz" >/dev/null 2>&1; then
|
||||
if curl -fsS "$READY_URL" >/dev/null 2>&1; then
|
||||
log "приложение готово"
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if ! curl -fsS "http://127.0.0.1:${APP_PORT:-8080}/readyz" >/dev/null 2>&1; then
|
||||
if ! curl -fsS "$READY_URL" >/dev/null 2>&1; then
|
||||
die "приложение не поднялось; откат: glchat restore <бэкап>, затем docker compose up -d"
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user