From a633c35f3433e7d0b0a184f9c93d459197948e9b Mon Sep 17 00:00:00 2001 From: zhuds Date: Sun, 28 Jun 2026 13:59:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=A7=A3=E5=86=B3=E5=8F=91=E5=B8=83ws?= =?UTF-8?q?=E5=90=8Eemp-admin=20=E7=9A=84=20Nginx=20=E5=8F=8D=E4=BB=A3?= =?UTF-8?q?=E6=9C=AA=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- isolated/apply-update.sh | 23 +++++++++++++++++++++++ isolated/update.MD | 6 ++++++ 2 files changed, 29 insertions(+) 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