Files

168 lines
4.4 KiB
Bash

#!/bin/bash
# Paper Burner X - 部署前检查和修复脚本
echo "======================================"
echo "Paper Burner X - 部署前检查"
echo "======================================"
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查函数
check_command() {
if command -v $1 &> /dev/null; then
echo -e "${GREEN}${NC} $1 已安装"
return 0
else
echo -e "${RED}${NC} $1 未安装"
return 1
fi
}
# 1. 检查必要的命令
echo "1. 检查系统依赖..."
check_command docker || DOCKER_MISSING=1
check_command docker-compose || DOCKER_COMPOSE_MISSING=1
check_command node || NODE_MISSING=1
check_command npm || NPM_MISSING=1
echo ""
# 2. 检查环境变量文件
echo "2. 检查配置文件..."
if [ -f ".env" ]; then
echo -e "${GREEN}${NC} .env 文件存在"
else
echo -e "${YELLOW}!${NC} .env 文件不存在,从模板复制..."
cp .env.example .env
echo -e "${YELLOW}${NC} 请编辑 .env 文件并配置必要的环境变量!"
echo " 必须修改:"
echo " - DB_PASSWORD"
echo " - JWT_SECRET"
echo " - ADMIN_EMAIL"
echo " - ADMIN_PASSWORD"
fi
echo ""
# 3. 安装后端依赖
echo "3. 安装后端依赖..."
if [ -d "server/node_modules" ]; then
echo -e "${GREEN}${NC} 后端依赖已安装"
else
echo -e "${YELLOW}${NC} 正在安装后端依赖..."
cd server
npm install
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} 后端依赖安装成功"
else
echo -e "${RED}${NC} 后端依赖安装失败"
exit 1
fi
cd ..
fi
echo ""
# 4. 生成 Prisma Client
echo "4. 生成 Prisma Client..."
cd server
npx prisma generate
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} Prisma Client 生成成功"
else
echo -e "${RED}${NC} Prisma Client 生成失败"
exit 1
fi
cd ..
echo ""
# 5. 检查前端文件
echo "5. 检查前端文件..."
if [ -f "index.html" ]; then
echo -e "${GREEN}${NC} index.html 存在"
else
echo -e "${RED}${NC} index.html 不存在"
exit 1
fi
if [ -f "js/storage/storage-adapter.js" ]; then
echo -e "${GREEN}${NC} storage-adapter.js 存在"
else
echo -e "${RED}${NC} storage-adapter.js 不存在"
exit 1
fi
echo ""
# 6. 提供部署选项
echo "======================================"
echo "部署选项:"
echo "======================================"
echo ""
echo "选择部署模式:"
echo " 1) Vercel 前端部署(纯静态)"
echo " 2) Docker 后端部署(完整功能)"
echo " 3) 本地开发模式"
echo ""
read -p "请选择 (1-3): " choice
case $choice in
1)
echo ""
echo "Vercel 前端部署步骤:"
echo "1. 访问 https://vercel.com"
echo "2. 导入此 GitHub 仓库"
echo "3. 保持默认配置点击部署"
echo "4. 完成!"
echo ""
echo "注意:Vercel 模式下数据存储在浏览器本地"
;;
2)
echo ""
echo "正在启动 Docker 服务..."
# 检查 .env 是否配置
if grep -q "changeme" .env; then
echo -e "${RED}${NC} 警告:.env 文件包含默认值!"
echo " 请编辑 .env 文件后再启动服务"
exit 1
fi
# 启动 Docker
docker-compose up -d
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} Docker 服务启动成功!"
echo ""
echo "访问地址:"
echo " 主应用: http://localhost:3000"
echo " 管理面板: http://localhost:3000/admin"
echo ""
echo "查看日志: docker-compose logs -f app"
else
echo -e "${RED}${NC} Docker 服务启动失败"
exit 1
fi
;;
3)
echo ""
echo "启动本地开发服务器..."
cd server
npm run dev &
SERVER_PID=$!
echo ""
echo -e "${GREEN}${NC} 开发服务器已启动"
echo " 后端 API: http://localhost:3000/api"
echo " 前端: 直接打开 index.html"
echo ""
echo "按 Ctrl+C 停止服务器"
wait $SERVER_PID
;;
*)
echo "无效选择"
exit 1
;;
esac