fix and update
This commit is contained in:
79
install.sh
79
install.sh
@@ -10,7 +10,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_VERSION="2.4.2"
|
||||
SCRIPT_VERSION="2.5.0"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
@@ -426,30 +426,27 @@ recreate_docker_nginx() {
|
||||
compose_uses_proxy_profile || return 0
|
||||
build_compose_stack_cmd
|
||||
log "Пересоздание контейнера lendry-id-nginx (подхват конфигов из ./nginx/conf.d)..."
|
||||
docker_cmd "${COMPOSE_STACK_CMD[@]}" up -d --force-recreate nginx nginx-gateway-sync
|
||||
docker_cmd "${COMPOSE_STACK_CMD[@]}" up -d --force-recreate nginx
|
||||
wait_for_service "nginx" 60
|
||||
}
|
||||
|
||||
ensure_nginx_gateway_sync() {
|
||||
compose_uses_proxy_profile || return 0
|
||||
build_compose_stack_cmd
|
||||
log "Запуск nginx-gateway-sync (авто-reload Nginx после пересборки api-gateway)..."
|
||||
docker_cmd "${COMPOSE_STACK_CMD[@]}" up -d nginx-gateway-sync
|
||||
}
|
||||
|
||||
post_deploy_proxy_verify() {
|
||||
local strict="${1:-0}"
|
||||
compose_uses_proxy_profile || return 0
|
||||
wait_for_service "nginx" 30
|
||||
ensure_nginx_gateway_sync
|
||||
wait_for_service "nginx" 60
|
||||
wait_for_api_grpc_ready 90 || {
|
||||
[[ "$strict" -eq 1 ]] && fail "api-gateway → sso-core gRPC не готов (/health/ready). Проверьте: docker compose logs sso-core api-gateway"
|
||||
warn "api-gateway → sso-core gRPC не готов (/health/ready)"
|
||||
}
|
||||
sync_nginx_after_api_gateway_restart
|
||||
log "Проверка Docker Nginx → api-gateway (DNS + /idp-api)..."
|
||||
reload_docker_nginx
|
||||
sleep 2
|
||||
verify_nginx_reaches_api_gateway 24 5 || {
|
||||
[[ "$strict" -eq 1 ]] && fail "Docker Nginx не достучался до api-gateway:3000 — см. docker compose logs nginx api-gateway"
|
||||
warn "Docker Nginx → api-gateway: проверка не прошла"
|
||||
reload_docker_nginx
|
||||
verify_nginx_reaches_api_gateway 12 5 || {
|
||||
[[ "$strict" -eq 1 ]] && fail "Docker Nginx не достучался до api-gateway:3000 — см. docker compose logs nginx api-gateway"
|
||||
warn "Docker Nginx → api-gateway: проверка не прошла"
|
||||
}
|
||||
}
|
||||
verify_nginx_reaches_media_ws || true
|
||||
if [[ "$(env_get USE_NGINX_SSL false)" == "true" ]]; then
|
||||
@@ -460,6 +457,32 @@ post_deploy_proxy_verify() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Поэтапный запуск: nginx стартует ПОСЛЕ healthy api-gateway — без 502 на первом запросе.
|
||||
deploy_phased_stack() {
|
||||
log "Фаза 1/5: PostgreSQL, Redis, RabbitMQ, MinIO, LDAP..."
|
||||
compose_build_and_up postgres redis rabbitmq minio ldap-auth
|
||||
wait_for_service "ldap-auth" 90
|
||||
|
||||
log "Фаза 2/5: sso-core..."
|
||||
SKIP_DOCKER_PRUNE=1
|
||||
compose_build_and_up sso-core
|
||||
wait_for_service "sso-core" 120
|
||||
|
||||
log "Фаза 3/5: api-gateway..."
|
||||
compose_build_and_up api-gateway
|
||||
wait_for_service "api-gateway" 90
|
||||
wait_for_api_grpc_ready 90 || warn "gRPC api-gateway → sso-core не готов — API может отдавать 502"
|
||||
|
||||
log "Фаза 4/5: frontend, docs, media-ws..."
|
||||
compose_build_and_up frontend docs media-ws
|
||||
wait_for_service "frontend" 90
|
||||
wait_for_service "docs" 60
|
||||
|
||||
log "Фаза 5/5: Docker Nginx (после готовности backend)..."
|
||||
compose_build_and_up nginx
|
||||
post_deploy_proxy_verify 1
|
||||
}
|
||||
|
||||
prepare_compose_stack() {
|
||||
resolve_nginx_mode_and_ports
|
||||
write_compose_override
|
||||
@@ -2050,10 +2073,6 @@ nginx_upstream_var() {
|
||||
printf 'idp_up_%s' "$(printf '%s' "$1" | tr -c 'A-Za-z0-9' '_')"
|
||||
}
|
||||
|
||||
nginx_api_uses_static_ip() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# proxy_pass к КОРНЮ апстрима ($request_uri сохраняет путь и query).
|
||||
# docker: resolver + переменная (перерезолв DNS после recreate api-gateway).
|
||||
# host: статический proxy_pass на 127.0.0.1.
|
||||
@@ -2904,16 +2923,18 @@ deploy_stack() {
|
||||
verify_postgres_auth
|
||||
|
||||
log "Сборка и запуск контейнеров (10–20 минут при первом запуске)..."
|
||||
compose_build_and_up
|
||||
recreate_host_port_services
|
||||
ensure_host_upstreams
|
||||
|
||||
wait_for_service "sso-core" 120
|
||||
wait_for_service "api-gateway" 90
|
||||
wait_for_api_grpc_ready 60 || warn "gRPC api-gateway → sso-core не готов — API может отдавать 502"
|
||||
wait_for_service "frontend" 60
|
||||
wait_for_service "docs" 60
|
||||
post_deploy_proxy_verify 1
|
||||
if compose_uses_proxy_profile; then
|
||||
deploy_phased_stack
|
||||
else
|
||||
compose_build_and_up
|
||||
recreate_host_port_services
|
||||
ensure_host_upstreams
|
||||
wait_for_service "sso-core" 120
|
||||
wait_for_service "api-gateway" 90
|
||||
wait_for_api_grpc_ready 60 || warn "gRPC api-gateway → sso-core не готов — API может отдавать 502"
|
||||
wait_for_service "frontend" 60
|
||||
wait_for_service "docs" 60
|
||||
fi
|
||||
}
|
||||
|
||||
save_install_state() {
|
||||
@@ -3343,6 +3364,7 @@ docker_fresh_purge() {
|
||||
build_compose_stack_cmd
|
||||
|
||||
log "Остановка стека и удаление volumes (PostgreSQL, Redis, MinIO, RabbitMQ)..."
|
||||
docker_cmd rm -f lendry-id-nginx-gateway-sync 2>/dev/null || true
|
||||
docker_cmd "${COMPOSE_STACK_CMD[@]}" down -v --remove-orphans 2>/dev/null || true
|
||||
docker_cmd compose --env-file .env down -v --remove-orphans 2>/dev/null || true
|
||||
docker_cmd compose --env-file .env --profile proxy down -v --remove-orphans 2>/dev/null || true
|
||||
@@ -3609,7 +3631,6 @@ action_fix_all_errors() {
|
||||
esac
|
||||
apply_intranet_selfsigned_runtime
|
||||
recreate_docker_nginx
|
||||
ensure_nginx_gateway_sync
|
||||
sync_nginx_after_api_gateway_restart
|
||||
verify_nginx_reaches_api_gateway 24 5 || compose_build_and_up api-gateway
|
||||
sync_nginx_after_api_gateway_restart
|
||||
|
||||
Reference in New Issue
Block a user