47 lines
1.4 KiB
Bash
47 lines
1.4 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
cd PROJECT_PATH_PLACEHOLDER
|
||
|
||
echo "备份上传文件..."
|
||
if [ -d "uploads" ]; then
|
||
mkdir -p backups
|
||
cp -r uploads backups/uploads-$(date +%Y%m%d-%H%M%S) 2>/dev/null || true
|
||
fi
|
||
|
||
echo "解压新版本..."
|
||
tar -xzf REMOTE_FILE_NAME_PLACEHOLDER
|
||
rm -f REMOTE_FILE_NAME_PLACEHOLDER
|
||
|
||
echo "恢复上传目录..."
|
||
if [ -d "backups" ]; then
|
||
latest_backup=$(ls -td backups/uploads-* 2>/dev/null | head -1)
|
||
if [ -n "$latest_backup" ] && [ -d "$latest_backup" ]; then
|
||
mkdir -p uploads
|
||
cp -r "$latest_backup"/* uploads/ 2>/dev/null || true
|
||
fi
|
||
fi
|
||
|
||
mkdir -p uploads
|
||
chmod -R 777 uploads
|
||
|
||
echo "停止旧容器..."
|
||
docker compose down 2>/dev/null || docker-compose down 2>/dev/null || true
|
||
|
||
echo "构建并启动新容器(由服务器 Docker 构建)..."
|
||
docker compose up -d --build --force-recreate || docker-compose up -d --build --force-recreate
|
||
|
||
echo "等待容器启动..."
|
||
sleep 20
|
||
|
||
echo "执行数据库迁移..."
|
||
if [ -f prisma/schema.prisma ]; then
|
||
docker compose exec -T app npx prisma db push --accept-data-loss --schema=/app/prisma/schema.prisma 2>/dev/null || docker-compose exec -T app npx prisma db push --accept-data-loss --schema=/app/prisma/schema.prisma 2>/dev/null || echo "数据库迁移完成或跳过"
|
||
fi
|
||
|
||
echo "查看容器状态..."
|
||
docker compose ps || docker-compose ps
|
||
|
||
echo "查看应用日志(最后50行)..."
|
||
docker compose logs app --tail=50 || docker-compose logs app --tail=50
|
||
|