119 lines
4.2 KiB
PowerShell
119 lines
4.2 KiB
PowerShell
# Paper Burner X - Windows 一键部署脚本
|
|
# PowerShell
|
|
|
|
Write-Host ""
|
|
Write-Host "======================================" -ForegroundColor Blue
|
|
Write-Host " Paper Burner X - 一键部署脚本" -ForegroundColor Blue
|
|
Write-Host "======================================" -ForegroundColor Blue
|
|
Write-Host ""
|
|
|
|
# 1. 检查 .env 文件
|
|
Write-Host "[1/6] 检查配置文件..." -ForegroundColor Yellow
|
|
if (-not (Test-Path ".env")) {
|
|
Write-Host "→ 创建 .env 文件" -ForegroundColor Yellow
|
|
Copy-Item ".env.example" ".env"
|
|
Write-Host "⚠️ 请编辑 .env 文件并配置以下必要项:" -ForegroundColor Red
|
|
Write-Host " - DB_PASSWORD"
|
|
Write-Host " - JWT_SECRET"
|
|
Write-Host " - ADMIN_EMAIL"
|
|
Write-Host " - ADMIN_PASSWORD"
|
|
Write-Host ""
|
|
Read-Host "配置完成后按回车继续"
|
|
}
|
|
Write-Host "✓ 配置文件检查完成" -ForegroundColor Green
|
|
Write-Host ""
|
|
|
|
# 2. 安装后端依赖
|
|
Write-Host "[2/6] 安装后端依赖..." -ForegroundColor Yellow
|
|
Set-Location server
|
|
if (-not (Test-Path "node_modules")) {
|
|
npm install
|
|
Write-Host "✓ 依赖安装完成" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "✓ 依赖已存在" -ForegroundColor Green
|
|
}
|
|
Set-Location ..
|
|
Write-Host ""
|
|
|
|
# 3. 生成 Prisma Client
|
|
Write-Host "[3/6] 生成 Prisma Client..." -ForegroundColor Yellow
|
|
Set-Location server
|
|
npx prisma generate
|
|
Write-Host "✓ Prisma Client 生成完成" -ForegroundColor Green
|
|
Set-Location ..
|
|
Write-Host ""
|
|
|
|
# 4. 启动 Docker 服务
|
|
Write-Host "[4/6] 启动 Docker 服务..." -ForegroundColor Yellow
|
|
docker-compose up -d postgres
|
|
Write-Host "→ 等待数据库启动..." -ForegroundColor Yellow
|
|
Start-Sleep -Seconds 5
|
|
Write-Host "✓ 数据库已启动" -ForegroundColor Green
|
|
Write-Host ""
|
|
|
|
# 5. 运行数据库迁移
|
|
Write-Host "[5/6] 初始化数据库..." -ForegroundColor Yellow
|
|
Set-Location server
|
|
npx prisma migrate deploy
|
|
Write-Host "✓ 数据库初始化完成" -ForegroundColor Green
|
|
Set-Location ..
|
|
Write-Host ""
|
|
|
|
# 6. 启动应用
|
|
Write-Host "[6/6] 启动应用服务..." -ForegroundColor Yellow
|
|
docker-compose up -d app
|
|
Write-Host "✓ 应用已启动" -ForegroundColor Green
|
|
Write-Host ""
|
|
|
|
# 等待应用启动
|
|
Write-Host "→ 等待应用启动..." -ForegroundColor Yellow
|
|
Start-Sleep -Seconds 3
|
|
|
|
# 检查健康状态
|
|
Write-Host "→ 检查服务健康状态..." -ForegroundColor Yellow
|
|
$healthy = $false
|
|
for ($i = 1; $i -le 10; $i++) {
|
|
try {
|
|
$response = Invoke-WebRequest -Uri "http://localhost:3000/api/health" -UseBasicParsing -ErrorAction SilentlyContinue
|
|
if ($response.StatusCode -eq 200) {
|
|
Write-Host "✓ 服务健康检查通过" -ForegroundColor Green
|
|
$healthy = $true
|
|
break
|
|
}
|
|
} catch {
|
|
Start-Sleep -Seconds 2
|
|
}
|
|
}
|
|
|
|
if (-not $healthy) {
|
|
Write-Host "✗ 服务启动失败,请检查日志:" -ForegroundColor Red
|
|
Write-Host " docker-compose logs -f app"
|
|
exit 1
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "======================================" -ForegroundColor Green
|
|
Write-Host " 🎉 部署成功!" -ForegroundColor Green
|
|
Write-Host "======================================" -ForegroundColor Green
|
|
Write-Host ""
|
|
Write-Host "访问地址:" -ForegroundColor Blue
|
|
Write-Host " 主应用: http://localhost:3000" -ForegroundColor Green
|
|
Write-Host " 管理面板: http://localhost:3000/admin" -ForegroundColor Green
|
|
Write-Host " API健康: http://localhost:3000/api/health" -ForegroundColor Green
|
|
Write-Host ""
|
|
|
|
$adminEmail = (Get-Content .env | Select-String "ADMIN_EMAIL=" | ForEach-Object { $_ -replace "ADMIN_EMAIL=", "" })
|
|
$adminPassword = (Get-Content .env | Select-String "ADMIN_PASSWORD=" | ForEach-Object { $_ -replace "ADMIN_PASSWORD=", "" })
|
|
|
|
Write-Host "管理员账户:" -ForegroundColor Blue
|
|
Write-Host " 邮箱: $adminEmail"
|
|
Write-Host " 密码: $adminPassword"
|
|
Write-Host ""
|
|
Write-Host "常用命令:" -ForegroundColor Blue
|
|
Write-Host " 查看日志: docker-compose logs -f app"
|
|
Write-Host " 停止服务: docker-compose down"
|
|
Write-Host " 重启服务: docker-compose restart"
|
|
Write-Host ""
|
|
Write-Host "⚠️ 首次登录后请立即修改管理员密码!" -ForegroundColor Yellow
|
|
Write-Host ""
|