79 lines
2.8 KiB
Bash
79 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# ============================================================
|
|
# Track 生产流转系统 — 增量部署脚本
|
|
# 服务器: 172.16.0.198
|
|
# 路径: /opt/Track
|
|
# 仅更新代码,不覆盖数据库
|
|
# ============================================================
|
|
set -e
|
|
|
|
SERVER="dxc@172.16.0.198"
|
|
REMOTE_DIR="/opt/Track"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M)
|
|
REMOTE_BACKUP_DIR="$REMOTE_DIR/backups/$TIMESTAMP"
|
|
|
|
echo "==================================================="
|
|
echo "🚀 Track 增量部署 — 仅更新代码"
|
|
echo "==================================================="
|
|
|
|
# 1. 远端备份
|
|
echo "[1/4] 服务器备份旧代码..."
|
|
ssh -t $SERVER "sudo mkdir -p $REMOTE_BACKUP_DIR && \
|
|
cd $REMOTE_DIR && \
|
|
echo '>> 备份当前代码...' && \
|
|
sudo tar -czf $REMOTE_BACKUP_DIR/code_backup.tar.gz \
|
|
backend frontend docker-compose.prod.yml 2>/dev/null || true && \
|
|
echo '>> 保留最近 3 个备份...' && \
|
|
cd $REMOTE_DIR/backups && \
|
|
sudo sh -c 'ls -dt */ 2>/dev/null | tail -n +4 | xargs -I {} rm -rf {} || true'"
|
|
|
|
if [ $? -ne 0 ]; then echo "❌ 备份失败,终止!"; exit 1; fi
|
|
|
|
# 2. 本地打包
|
|
echo "[2/4] 本地打包代码..."
|
|
tar -czf deploy.tar.gz \
|
|
--exclude="backend/venv" \
|
|
--exclude="backend/.venv" \
|
|
--exclude="backend/__pycache__" \
|
|
--exclude="backend/*.pyc" \
|
|
--exclude="backend/.env" \
|
|
--exclude="backend/uploads" \
|
|
--exclude="frontend/node_modules" \
|
|
--exclude="frontend/dist" \
|
|
--exclude=".git" \
|
|
--exclude=".idea" \
|
|
--exclude=".vscode" \
|
|
--exclude="track-uniapp/node_modules" \
|
|
--exclude="track-uniapp/dist" \
|
|
--exclude="track-uniapp/unpackage" \
|
|
backend frontend docker-compose.prod.yml
|
|
|
|
FILESIZE=$(stat -c%s "deploy.tar.gz" 2>/dev/null || stat -f%z "deploy.tar.gz")
|
|
echo ">> 打包完成: $((FILESIZE / 1024 / 1024)) MB"
|
|
|
|
# 3. 上传
|
|
echo "[3/4] 上传到服务器..."
|
|
scp deploy.tar.gz $SERVER:/tmp/deploy.tar.gz
|
|
if [ $? -ne 0 ]; then echo "❌ 上传失败!"; rm -f deploy.tar.gz; exit 1; fi
|
|
|
|
# 4. 替换重启
|
|
echo "[4/4] 服务器替换并重启..."
|
|
ssh -t $SERVER "cd $REMOTE_DIR && \
|
|
echo '>> 移除旧备份...' && \
|
|
sudo rm -rf backend_old frontend_old && \
|
|
echo '>> 保留当前为 old...' && \
|
|
(sudo mv backend backend_old 2>/dev/null || true) && \
|
|
(sudo mv frontend frontend_old 2>/dev/null || true) && \
|
|
echo '>> 解压新代码...' && \
|
|
sudo mv /tmp/deploy.tar.gz . && \
|
|
sudo tar -xzf deploy.tar.gz && \
|
|
echo '>> 重启 Docker...' && \
|
|
sudo docker compose -f docker-compose.prod.yml up -d --build && \
|
|
sudo rm deploy.tar.gz && \
|
|
echo '>> ✅ 部署完成!'"
|
|
|
|
rm -f deploy.tar.gz
|
|
echo "==================================================="
|
|
echo "✅ 增量部署完成!访问 http://172.16.0.198:8010"
|
|
echo "==================================================="
|