fix: make deploy health check wait for api and avoid noisy curl output

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-02 09:29:01 +08:00
parent 352faf404c
commit d78e59c125
+18 -8
View File
@@ -287,6 +287,8 @@ compose_up_build() {
step "docker compose up -d --build"
mkdir -p /root/market_intel_backups 2>/dev/null || true
compose up -d --build
# 给容器一点启动时间,再进入健康检查
sleep 3
}
compose_stop() {
@@ -324,17 +326,24 @@ verify_health() {
port="$(read_mi_port)"
local url="http://127.0.0.1:${port}/health"
step "健康检查 ${url}"
# 先等 api 容器起来,避免 rebuild 窗口误报
local i
for i in $(seq 1 30); do
if curl -fsS "${url}" >/dev/null 2>&1; then
log "health OK"
curl -fsS "${url}" || true
echo ""
for i in $(seq 1 60); do
if compose ps --status running 2>/dev/null | grep -qE 'mi_api|api'; then
break
fi
sleep 1
done
for i in $(seq 1 45); do
# -sS 静默;丢弃正文,避免 JSON 与后续菜单输出粘连
if curl -fsS --connect-timeout 2 --max-time 5 "${url}" >/dev/null 2>&1; then
log "health OK (${url})"
return 0
fi
sleep 2
done
log "警告: health 暂未就绪,请检查: docker compose -f ${REPO_ROOT}/docker-compose.yml logs api --tail 80"
log "也可手动验证: curl -fsS ${url}"
return 1
}
@@ -351,14 +360,15 @@ print_post_install_guide() {
local ip port
ip="$(detect_server_ip)"
port="$(read_mi_port)"
echo ""
# 清掉可能残留的 \r,避免和 docker/curl 进度条粘行
printf '\n'
echo "══════════════════════════════════════"
echo " 比特骆驼行情采集分析 部署完成"
echo " 目录: ${INSTALL_ROOT}"
echo " 本机: http://${ip}:${port}/health"
echo " 健康检查: http://${ip}:${port}/health"
echo " 看板: http://${ip}:${port}/"
echo " 管理: bash ${INSTALL_ROOT}/deploy/manage.sh"
echo " 配置: ${INSTALL_ROOT}/.env"
echo "══════════════════════════════════════"
echo ""
printf '\n'
}