123 lines
3.4 KiB
Bash
Executable File
123 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# KT财务系统部署脚本
|
||
# 使用方法: ./deploy.sh
|
||
|
||
set -e
|
||
|
||
SERVER_IP="172.16.74.149"
|
||
SERVER_USER="atai"
|
||
SERVER_PASS="wengewudi666808"
|
||
DEPLOY_PATH="/home/atai/kt-financial-system"
|
||
REPO_URL="https://gitea.ktyun.cc/chenjiangjiang/kt-financial-system.git"
|
||
|
||
echo "=== KT财务系统自动部署 ==="
|
||
echo "目标服务器: $SERVER_IP"
|
||
echo "部署路径: $DEPLOY_PATH"
|
||
echo ""
|
||
|
||
# 使用sshpass进行SSH连接(如果没有安装sshpass,会提示安装)
|
||
if ! command -v sshpass &> /dev/null; then
|
||
echo "⚠️ sshpass 未安装"
|
||
echo "MacOS安装: brew install hudochenkov/sshpass/sshpass"
|
||
echo "Linux安装: sudo apt-get install sshpass"
|
||
exit 1
|
||
fi
|
||
|
||
echo "📦 开始部署..."
|
||
|
||
sshpass -p "$SERVER_PASS" ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP << 'ENDSSH'
|
||
set -e
|
||
|
||
# 切换到部署目录
|
||
cd /home/atai
|
||
|
||
# 检查Docker是否安装
|
||
if ! command -v docker &> /dev/null; then
|
||
echo "❌ Docker未安装,正在安装..."
|
||
curl -fsSL https://get.docker.com | sh
|
||
sudo usermod -aG docker $USER
|
||
echo "✅ Docker安装完成"
|
||
fi
|
||
|
||
# 检查docker-compose是否安装
|
||
if ! command -v docker-compose &> /dev/null; then
|
||
echo "❌ docker-compose未安装,正在安装..."
|
||
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
sudo chmod +x /usr/local/bin/docker-compose
|
||
echo "✅ docker-compose安装完成"
|
||
fi
|
||
|
||
# 克隆或更新代码
|
||
if [ ! -d "kt-financial-system" ]; then
|
||
echo "📥 克隆代码仓库..."
|
||
git clone https://gitea.ktyun.cc/chenjiangjiang/kt-financial-system.git
|
||
else
|
||
echo "📥 更新代码..."
|
||
cd kt-financial-system
|
||
git pull origin main
|
||
cd ..
|
||
fi
|
||
|
||
cd kt-financial-system
|
||
|
||
# 停止旧容器
|
||
echo "🛑 停止旧容器..."
|
||
sudo docker-compose down || true
|
||
|
||
# 构建并启动新容器
|
||
echo "🚀 构建并启动新容器..."
|
||
sudo docker-compose up -d --build
|
||
|
||
# 等待PostgreSQL就绪
|
||
echo "⏳ 等待PostgreSQL就绪..."
|
||
POSTGRES_READY=0
|
||
for i in {1..10}; do
|
||
if sudo docker-compose exec -T postgres pg_isready -U kt_financial -d kt_financial > /dev/null 2>&1; then
|
||
echo "✅ PostgreSQL 已就绪"
|
||
POSTGRES_READY=1
|
||
break
|
||
fi
|
||
echo " 第${i}次重试..."
|
||
sleep 3
|
||
done
|
||
if [ "$POSTGRES_READY" -ne 1 ]; then
|
||
echo "❌ PostgreSQL 未在预期时间内就绪"
|
||
exit 1
|
||
fi
|
||
|
||
# 导入数据
|
||
echo "📦 导入财务数据..."
|
||
sudo docker-compose exec -T kt-financial \
|
||
sh -lc "pnpm --dir apps/backend import:data -- --csv /app/data/finance/finance-combined.csv --year 2025"
|
||
|
||
# 验证数据条数
|
||
echo "🔢 检查交易记录条数..."
|
||
sudo docker-compose exec -T postgres \
|
||
psql -U kt_financial -d kt_financial -c "SELECT COUNT(*) AS transaction_count FROM finance_transactions;"
|
||
|
||
# 清理旧镜像
|
||
echo "🧹 清理旧镜像..."
|
||
sudo docker image prune -f
|
||
|
||
# 显示容器状态
|
||
echo ""
|
||
echo "✅ 部署完成!"
|
||
echo ""
|
||
echo "📊 容器状态:"
|
||
sudo docker-compose ps
|
||
|
||
echo ""
|
||
echo "📝 查看日志:"
|
||
echo "docker-compose logs -f"
|
||
ENDSSH
|
||
|
||
echo ""
|
||
echo "🎉 部署成功!"
|
||
echo "🌐 访问地址: http://$SERVER_IP:8080"
|
||
echo ""
|
||
echo "📝 常用命令:"
|
||
echo " 查看日志: ssh $SERVER_USER@$SERVER_IP 'cd $DEPLOY_PATH && docker-compose logs -f'"
|
||
echo " 重启服务: ssh $SERVER_USER@$SERVER_IP 'cd $DEPLOY_PATH && docker-compose restart'"
|
||
echo " 停止服务: ssh $SERVER_USER@$SERVER_IP 'cd $DEPLOY_PATH && docker-compose down'"
|