fix(deploy): 修复第4步 ssh 远端命令被本地 bash 展开的 bug
第4步远端命令用双引号包裹,内部 $(curl ...) 与 $API_CODE 会被本地 bash 提前展开、嵌套双引号导致引号错乱,远端命令被污染后卡死。 - 移除 API 验证的 $(curl)/$API_CODE(历史一直未在远端执行过,属可选增强) - nginx 验证改为无嵌套引号的 (grep && echo || echo) 结构 - 保留去 sudo 化与 models 排除,全流程免密
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user