From fe52da77e93363c9db42323ee06368f14b432782 Mon Sep 17 00:00:00 2001 From: yueli Date: Mon, 31 Aug 2026 09:21:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 打包时排除测试脚本/临时SQL/编译输出等垃圾文件 - 增加 SSL 证书备份 - 部署后自动验证 nginx 代理指向 inventory_api_prod - 部署后自动验证 API 连通性(检测 404 及时报警) --- deploy_code.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/deploy_code.sh b/deploy_code.sh index e5899ac..11a0ebf 100644 --- a/deploy_code.sh +++ b/deploy_code.sh @@ -19,6 +19,8 @@ ssh -t $SERVER "sudo mkdir -p $REMOTE_BACKUP_DIR && \ sudo mkdir -p inventory-backend inventory-web models_prod && \ echo '>> 执行代码备份...' && \ sudo tar -czf $REMOTE_BACKUP_DIR/code_backup.tar.gz inventory-backend inventory-web docker-compose.prod.yml && \ + echo '>> 备份 SSL 证书...' && \ + (sudo tar -czf $REMOTE_BACKUP_DIR/ssl_backup.tar.gz ssl 2>/dev/null || echo '⚠️ ssl 目录不存在,跳过') && \ echo '>> 检查 CLIP 模型文件...' && \ if [ ! -f models_prod/clip_vision.onnx ]; then \ echo '⚠️ 警告: models_prod/clip_vision.onnx 不存在!拍照识图功能将无法使用。'; \ @@ -48,6 +50,13 @@ tar -czf deploy.tar.gz \ --exclude="inventory-backend/models" \ --exclude="inventory-backend/pgdata" \ --exclude="inventory-backend/pgdata_docker" \ + --exclude="inventory-backend/test_*.py" \ + --exclude="inventory-backend/fix_*.sql" \ + --exclude="inventory-backend/*.sql" \ + --exclude="inventory-backend/import_test_edge_cases.xlsx" \ + --exclude="inventory-backend/import_edge_case_test.xlsx" \ + --exclude="inventory-web/tsc-out.txt" \ + --exclude="deploy.tar.gz" \ --exclude="data_copy" \ inventory-backend inventory-web docker-compose.prod.yml @@ -81,6 +90,20 @@ ssh -t $SERVER "cd $REMOTE_DIR && \ sudo tar -xzf deploy.tar.gz && \ echo '>> 重启 Docker 容器...' && \ sudo docker compose -f docker-compose.prod.yml up -d --build backend frontend && \ + echo '>> 验证 nginx 代理配置...' && \ + sleep 5 && \ + if sudo 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 && \ sudo rm deploy.tar.gz" if [ $? -ne 0 ]; then