Files
IdP/infra/nginx-gateway-sync/entrypoint.sh
2026-06-30 13:48:50 +03:00

51 lines
1.5 KiB
Bash

#!/bin/sh
set -eu
NGINX_CONTAINER="${NGINX_CONTAINER:-lendry-id-nginx}"
GATEWAY_CONTAINER="${GATEWAY_CONTAINER:-lendry-id-api-gateway}"
BOOT_WAIT_SEC="${BOOT_WAIT_SEC:-55}"
GATEWAY_HEALTH_URL="http://${GATEWAY_CONTAINER}:3000/health"
reload_nginx() {
if docker exec "$NGINX_CONTAINER" nginx -s reload 2>/dev/null; then
echo "[nginx-gateway-sync] nginx reload OK"
else
echo "[nginx-gateway-sync] nginx reload failed — пробуем restart"
docker restart "$NGINX_CONTAINER" >/dev/null 2>&1 || true
fi
}
verify_gateway() {
if docker exec "$NGINX_CONTAINER" wget -qO- --timeout=5 "$GATEWAY_HEALTH_URL" 2>/dev/null \
| grep -q '"status"'; then
echo "[nginx-gateway-sync] nginx → ${GATEWAY_CONTAINER}:3000/health OK"
else
echo "[nginx-gateway-sync] предупреждение: nginx пока не достучался до ${GATEWAY_HEALTH_URL}"
fi
}
on_gateway_start() {
echo "[nginx-gateway-sync] ${GATEWAY_CONTAINER} перезапущен, ждём Nest (${BOOT_WAIT_SEC}s)..."
sleep "$BOOT_WAIT_SEC"
reload_nginx
sleep 2
verify_gateway
}
echo "[nginx-gateway-sync] слежение за ${GATEWAY_CONTAINER} (boot wait ${BOOT_WAIT_SEC}s)..."
# Первый запуск стека: gateway уже healthy, но nginx мог стартовать раньше — синхронизируем.
(
sleep "$BOOT_WAIT_SEC"
reload_nginx
sleep 2
verify_gateway
) &
docker events \
--filter "container=${GATEWAY_CONTAINER}" \
--filter event=start \
--format '{{.Time}}' | while read -r _; do
on_gateway_start
done