feat(deploy): 部署脚本优化

- 打包时排除测试脚本/临时SQL/编译输出等垃圾文件
- 增加 SSL 证书备份
- 部署后自动验证 nginx 代理指向 inventory_api_prod
- 部署后自动验证 API 连通性(检测 404 及时报警)
This commit is contained in:
yueli
2026-08-31 09:21:00 +08:00
parent 0c3e57f5b5
commit fe52da77e9

View File

@ -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