diff --git a/isolated/apply-update.sh b/isolated/apply-update.sh index fe82e81..0da9c5e 100644 --- a/isolated/apply-update.sh +++ b/isolated/apply-update.sh @@ -124,6 +124,18 @@ read_services() { done } +contains_service() { + local target="$1" + shift + local service + for service in "$@"; do + if [[ "$service" == "$target" ]]; then + return 0 + fi + done + return 1 +} + need_cmd docker ENV_FILE="$(resolve_runtime_file "$ENV_FILE" ".env")" resolve_compose_files @@ -147,6 +159,17 @@ $COMPOSE_CMD \ -p "$PROJECT_NAME" \ up -d --no-deps --force-recreate "${UPDATE_SERVICES[@]}" +if ! contains_service "emp-admin" "${UPDATE_SERVICES[@]}" \ + && { contains_service "emp-ws" "${UPDATE_SERVICES[@]}" || contains_service "emp-gateway" "${UPDATE_SERVICES[@]}"; }; then + log "Restart emp-admin to refresh Nginx upstream DNS" + # shellcheck disable=SC2086 + $COMPOSE_CMD \ + --env-file "$ENV_FILE" \ + "${COMPOSE_ARGS[@]}" \ + -p "$PROJECT_NAME" \ + restart emp-admin +fi + log "Current service status" # shellcheck disable=SC2086 $COMPOSE_CMD \ diff --git a/isolated/update.MD b/isolated/update.MD index 6c03deb..233014d 100644 --- a/isolated/update.MD +++ b/isolated/update.MD @@ -141,6 +141,12 @@ docker compose --env-file .env -f docker-compose.yml -p emp-uat ps emp-admin emp docker compose --env-file .env -f docker-compose.yml -p emp-uat logs --tail=100 emp-monitor ``` +如果只更新了 `ws` 或 `gateway` 后,管理入口出现 `/simulator/` 或 `/api/` 502,通常是 `emp-admin` 内部 Nginx 仍缓存了旧容器 IP。新版 `apply-update.sh` 会自动重启 `emp-admin` 刷新上游解析;老包或手工更新时可执行: + +```bash +docker compose --env-file .env -f docker-compose.yml -p emp-uat restart emp-admin +``` + 查看 test 时把目录和项目名改为 `emp-test`: ```bash