fix(update): 改用 compose 文件判断是否启动 bugcollect-service
前两次修复均依赖历史容器(docker ps -a),在旧部署从未运行过 bugcollect 的情况下无法检测。 改为检查 docker-compose.yml 是否定义了 bugcollect-service: - profile 激活:有定义即导出 COMPOSE_PROFILES=bugcollect - 服务重启:有定义即直接 up,不依赖容器历史状态 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
b0dad0b90e
当前提交
b1faced2f5
@ -139,12 +139,12 @@ ok "NGINX_BIND=${_NGINX_BIND}"
|
|||||||
|
|
||||||
[ -n "$_CONSOLE_DOMAIN" ] || fail "config/xuqm.env 中 CONSOLE_DOMAIN 未设置,请手动补充后重试"
|
[ -n "$_CONSOLE_DOMAIN" ] || fail "config/xuqm.env 中 CONSOLE_DOMAIN 未设置,请手动补充后重试"
|
||||||
|
|
||||||
# 检测可选 profile 容器(含已停止),升级时保持 profile 激活状态,
|
# 若 docker-compose.yml 包含 bugcollect-service 定义,激活 bugcollect profile,
|
||||||
# 避免 docker compose --remove-orphans 把 profile 容器当孤儿停掉
|
# 确保 --remove-orphans 不把该服务的容器当孤儿停掉
|
||||||
_ACTIVE_PROFILES=""
|
_ACTIVE_PROFILES=""
|
||||||
if docker ps -a --format '{{.Names}}' 2>/dev/null | grep -qi 'bugcollect'; then
|
if grep -q 'bugcollect-service:' "$ROOT_DIR/docker-compose.yml" 2>/dev/null; then
|
||||||
_ACTIVE_PROFILES="bugcollect"
|
_ACTIVE_PROFILES="bugcollect"
|
||||||
ok "检测到 bugcollect-service(含已停止)→ 激活 bugcollect profile"
|
ok "docker-compose.yml 包含 bugcollect-service → 激活 bugcollect profile"
|
||||||
fi
|
fi
|
||||||
export COMPOSE_PROFILES="${_ACTIVE_PROFILES}"
|
export COMPOSE_PROFILES="${_ACTIVE_PROFILES}"
|
||||||
|
|
||||||
@ -506,15 +506,17 @@ for _svc in tenant-service im-service file-service update-service license-servic
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# bugcollect-service / symbolicator 是 profile 服务,需单独处理:
|
# bugcollect-service / symbolicator 是 profile 服务,需单独处理。
|
||||||
# 用 docker ps -a 检测历史容器(含已停止),存在即重启,确保升级不漏掉
|
# 判断依据:docker-compose.yml 中是否定义了 bugcollect-service(而非历史容器是否存在)。
|
||||||
for _svc in bugcollect-service symbolicator; do
|
# 旧部署首次引入此服务时没有历史容器,必须用 compose 文件判断。
|
||||||
if docker ps -a --format '{{.Names}}' 2>/dev/null | grep -qi "${_svc}"; then
|
if grep -q 'bugcollect-service:' "$ROOT_DIR/docker-compose.yml" 2>/dev/null; then
|
||||||
|
for _svc in bugcollect-service symbolicator; do
|
||||||
info "应用新镜像并重启 ${_svc} ..."
|
info "应用新镜像并重启 ${_svc} ..."
|
||||||
COMPOSE_PROFILES=bugcollect $_COMPOSE up -d --no-deps "$_svc"
|
COMPOSE_PROFILES=bugcollect $_COMPOSE up -d --no-deps "$_svc" \
|
||||||
ok "${_svc} 已更新"
|
&& ok "${_svc} 已更新" \
|
||||||
fi
|
|| warn "${_svc} 启动失败,请检查: docker compose logs ${_svc}"
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# 确保 nginx 在运行(一键更新时可能因 --remove-orphans 时序问题导致 nginx 被停掉)
|
# 确保 nginx 在运行(一键更新时可能因 --remove-orphans 时序问题导致 nginx 被停掉)
|
||||||
if ! $_COMPOSE ps --services --filter status=running 2>/dev/null | grep -q "^nginx$"; then
|
if ! $_COMPOSE ps --services --filter status=running 2>/dev/null | grep -q "^nginx$"; then
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户