58 lines
1.9 KiB
PowerShell
58 lines
1.9 KiB
PowerShell
[CmdletBinding()]
|
|||
|
|
param([switch]$NoBuild)
|
||
|
|
|
||
|
|
$ErrorActionPreference = "Stop"
|
||
|
|
$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||
|
|
$projectRoot = Resolve-Path (Join-Path $scriptDirectory "..\..")
|
||
|
|
$runtimeDirectory = Join-Path $scriptDirectory "runtime"
|
||
|
|
$environmentFile = Join-Path $runtimeDirectory "local-rtc.env"
|
||
|
|
$requiredFiles = @(
|
||
|
|
"rtc-app-key",
|
||
|
|
"volc-access-key-id",
|
||
|
|
"volc-secret-access-key",
|
||
|
|
"voice-chat-template.json",
|
||
|
|
"local-rtc.env"
|
||
|
|
)
|
||
|
|
|
||
|
|
foreach ($name in $requiredFiles) {
|
||
|
|
if (-not (Test-Path -LiteralPath (Join-Path $runtimeDirectory $name) -PathType Leaf)) {
|
||
|
|
throw "缺少 $name,请先运行 .\deploy\local-rtc\configure.ps1"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Push-Location $projectRoot
|
||
|
|
try {
|
||
|
|
$arguments = @(
|
||
|
|
"compose",
|
||
|
|
"-f", "compose.yaml",
|
||
|
|
"-f", "deploy/local-rtc/compose.override.yaml",
|
||
|
|
"--env-file", $environmentFile,
|
||
|
|
"up", "-d"
|
||
|
|
)
|
||
|
|
if (-not $NoBuild) { $arguments += "--build" }
|
||
|
|
$arguments += @(
|
||
|
|
"postgres", "redis", "minio", "keycloak", "migrate", "seed",
|
||
|
|
"callbacks", "mock-alert-receiver", "mock-provider", "api", "worker"
|
||
|
|
)
|
||
|
|
& docker @arguments
|
||
|
|
if ($LASTEXITCODE -ne 0) { throw "Docker Compose 启动失败" }
|
||
|
|
|
||
|
|
Write-Host "`n等待本地 API 就绪..." -ForegroundColor Cyan
|
||
|
|
$deadline = [DateTime]::UtcNow.AddMinutes(3)
|
||
|
|
do {
|
||
|
|
Start-Sleep -Seconds 2
|
||
|
|
try {
|
||
|
|
$health = Invoke-RestMethod -Uri "http://localhost:58080/health/ready" -TimeoutSec 3
|
||
|
|
if ($health) { break }
|
||
|
|
}
|
||
|
|
catch { }
|
||
|
|
} while ([DateTime]::UtcNow -lt $deadline)
|
||
|
|
|
||
|
|
if (-not $health) { throw "本地 API 未在三分钟内就绪,请检查 docker compose logs api worker" }
|
||
|
|
Write-Host "本地真实 RTC 后端已就绪:http://localhost:58080" -ForegroundColor Green
|
||
|
|
Write-Host "现在可以启动 Windows 语音终端模拟器。" -ForegroundColor Green
|
||
|
|
}
|
||
|
|
finally {
|
||
|
|
Pop-Location
|
||
|
|
}
|