diff --git a/deploy_code.sh b/deploy_code.sh index 511b533..55ec66f 100644 --- a/deploy_code.sh +++ b/deploy_code.sh @@ -84,6 +84,8 @@ if [ $? -ne 0 ]; then fi # 4. 服务器执行替换与重启 +# ★ 注意:ssh 远端命令用双引号包裹,内部绝不能出现 $(...) 或嵌套双引号, +# 否则会被本地 bash 提前展开/引号错乱(历史 bug:API_CODE 被本地 curl 展开导致远端命令污染) echo "[4/4] 正在生产环境执行热更新 (全程免密)..." ssh $SERVER "cd $REMOTE_DIR && \ echo '>> 移除历史旧目录...' && \ @@ -96,20 +98,10 @@ ssh $SERVER "cd $REMOTE_DIR && \ tar -xzf deploy.tar.gz && \ echo '>> 重启 Docker 容器...' && \ docker compose -f docker-compose.prod.yml up -d --build backend frontend && \ - echo '>> 验证 nginx 代理配置...' && \ + echo '>> 等待服务就绪...' && \ sleep 5 && \ - if docker exec inventory_ui_prod grep -q "inventory_api_prod" /etc/nginx/conf.d/default.conf; then \ - echo '✅ nginx 代理已指向 inventory_api_prod'; \ - else \ - echo '⚠️ 警告: nginx 代理仍是 backend,可能出现 /api/ 404!请检查 nginx.conf'; \ - fi && \ - echo '>> 验证 API 连通性...' && \ - API_CODE=$(curl -k -s -o /dev/null -w "%{http_code}" "https://localhost/api/inbound/base/units") && \ - if [ "$API_CODE" = "404" ]; then \ - echo '⚠️ 警告: API 返回 404,代理可能指向了错误的容器!'; \ - else \ - echo "✅ API 连通性正常 HTTP=$API_CODE"; \ - fi && \ + echo '>> 验证 nginx 代理配置...' && \ + (docker exec inventory_ui_prod grep -q inventory_api_prod /etc/nginx/conf.d/default.conf && echo '✅ nginx 代理已指向 inventory_api_prod' || echo '⚠️ 警告: nginx 代理仍是 backend,可能出现 /api/ 404!请检查 nginx.conf') && \ rm deploy.tar.gz" if [ $? -ne 0 ]; then