|
|
| Set-StrictMode -Version Latest
|
| $ErrorActionPreference = 'Stop'
|
| $root = Split-Path -Parent $PSScriptRoot
|
| Set-Location $root
|
|
|
| function Test-DockerCompose {
|
| $docker = Get-Command docker -ErrorAction SilentlyContinue
|
| if (-not $docker) { return $false }
|
| try {
|
| docker compose version 2>$null | Out-Null
|
| return $true
|
| } catch { return $false }
|
| }
|
|
|
| if (Test-DockerCompose) {
|
| Write-Host 'Restarting Docker Compose service: api ...'
|
| docker compose restart api
|
| Write-Host 'Done. API should be at http://localhost:8000 (check /api/health).'
|
| exit 0
|
| }
|
|
|
| Write-Host 'Docker Compose not available; trying to stop whatever is listening on port 8000 ...'
|
| $listeners = Get-NetTCPConnection -LocalPort 8000 -ErrorAction SilentlyContinue |
|
| Where-Object { $_.State -eq 'Listen' }
|
| $pids = $listeners | Select-Object -ExpandProperty OwningProcess -Unique
|
| foreach ($procId in $pids) {
|
| try {
|
| Stop-Process -Id $procId -Force -ErrorAction Stop
|
| Write-Host "Stopped process $procId"
|
| } catch {
|
| Write-Warning "Could not stop PID ${procId}: $_"
|
| }
|
| }
|
|
|
| Write-Host @'
|
|
|
| No Docker Compose detected. Start the API manually in another terminal, from the repo:
|
|
|
| cd backend
|
| .\.venv\Scripts\activate # if you use a venv
|
| pip install -r requirements.txt # first time only
|
| uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
|
|
| Or use Docker Desktop, then from repo root: docker compose up --build
|
| '@
|
|
|