# 配置验证脚本 # PetWash API Docker 部署前检查 Write-Host "======================================" -ForegroundColor Cyan Write-Host "PetWash API 配置验证" -ForegroundColor Cyan Write-Host "======================================" -ForegroundColor Cyan Write-Host "" $allPassed = $true # 1. 检查 Docker Write-Host "1. 检查 Docker..." -ForegroundColor Yellow try { $dockerVersion = docker --version 2>&1 if ($LASTEXITCODE -eq 0) { Write-Host " [OK] Docker 已安装: $dockerVersion" -ForegroundColor Green } else { Write-Host " [FAIL] Docker 未安装" -ForegroundColor Red $allPassed = $false } } catch { Write-Host " [FAIL] Docker 未安装" -ForegroundColor Red $allPassed = $false } # 2. 检查 Docker Compose Write-Host "2. 检查 Docker Compose..." -ForegroundColor Yellow try { $composeVersion = docker-compose --version 2>&1 if ($LASTEXITCODE -eq 0) { Write-Host " [OK] Docker Compose 已安装: $composeVersion" -ForegroundColor Green } else { Write-Host " [FAIL] Docker Compose 未安装" -ForegroundColor Red $allPassed = $false } } catch { Write-Host " [FAIL] Docker Compose 未安装" -ForegroundColor Red $allPassed = $false } # 3. 检查配置文件 Write-Host "3. 检查配置文件..." -ForegroundColor Yellow $configFiles = @( "PetWash.Api/Dockerfile", "docker-compose.yml", "PetWash.Api/appsettings.json", "PetWash.Api/appsettings.Production.json", "init-database.sql" ) foreach ($file in $configFiles) { if (Test-Path $file) { Write-Host " [OK] $file 存在" -ForegroundColor Green } else { Write-Host " [FAIL] $file 不存在" -ForegroundColor Red $allPassed = $false } } # 4. 检查 MySQL 包 Write-Host "4. 检查 NuGet 包..." -ForegroundColor Yellow $csprojContent = Get-Content "PetWash.Api/PetWash.Api.csproj" -Raw if ($csprojContent -match "Pomelo.EntityFrameworkCore.MySql") { Write-Host " [OK] MySQL 包已添加" -ForegroundColor Green } else { Write-Host " [FAIL] MySQL 包未添加" -ForegroundColor Red $allPassed = $false } # 5. 检查 MySQL 连接 Write-Host "5. 检查 MySQL 连接..." -ForegroundColor Yellow $mysqlHost = "101.132.182.216" $mysqlPort = 3306 try { $tcpClient = New-Object System.Net.Sockets.TcpClient $tcpClient.Connect($mysqlHost, $mysqlPort) $tcpClient.Close() Write-Host " [OK] MySQL 服务器可访问" -ForegroundColor Green } catch { Write-Host " [FAIL] MySQL 服务器不可访问" -ForegroundColor Red Write-Host " 请检查网络连接和防火墙设置" -ForegroundColor Yellow $allPassed = $false } # 6. 检查项目编译 Write-Host "6. 检查项目编译..." -ForegroundColor Yellow try { Push-Location "PetWash.Api" $buildResult = dotnet build --no-restore 2>&1 Pop-Location if ($LASTEXITCODE -eq 0) { Write-Host " [OK] 项目编译成功" -ForegroundColor Green } else { Write-Host " [FAIL] 项目编译失败" -ForegroundColor Red $allPassed = $false } } catch { Write-Host " [FAIL] 项目编译失败" -ForegroundColor Red $allPassed = $false Pop-Location } # 总结 Write-Host "" Write-Host "======================================" -ForegroundColor Cyan if ($allPassed) { Write-Host "[SUCCESS] 所有检查通过!可以开始部署" -ForegroundColor Green Write-Host "" Write-Host "下一步:" -ForegroundColor Yellow Write-Host "1. 初始化数据库" -ForegroundColor White Write-Host " mysql -h 101.132.182.216 -P 3306 -u root -p" -ForegroundColor Gray Write-Host " 然后运行: SOURCE init-database.sql" -ForegroundColor Gray Write-Host "2. 运行部署脚本: .\deploy.ps1" -ForegroundColor White } else { Write-Host "[FAILED] 部分检查未通过,请修复后再部署" -ForegroundColor Red } Write-Host "======================================" -ForegroundColor Cyan