$ErrorActionPreference = "Stop" $here = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $here Write-Host "[AZA DRY-RUN] Working dir: $here" docker --version docker compose version Write-Host "[AZA DRY-RUN] Building and starting containers (API only)..." docker compose up -d --build Write-Host "" Write-Host "[AZA DRY-RUN] Containers status:" docker compose ps Write-Host "" Write-Host "[AZA DRY-RUN] Waiting 10 seconds for API startup..." Start-Sleep -Seconds 10 function TryGet($url) { try { $r = Invoke-WebRequest -UseBasicParsing -Uri $url -TimeoutSec 10 Write-Host "$url => $($r.StatusCode) $($r.Content)" return $true } catch { if ($_.Exception.Response -and $_.Exception.Response.StatusCode) { Write-Host "$url => HTTP $([int]$_.Exception.Response.StatusCode)" } else { Write-Host "$url => FAILED: $($_.Exception.Message)" } return $false } } Write-Host "" Write-Host "[AZA DRY-RUN] Testing endpoints (http://127.0.0.1:8000) ..." $ok1 = TryGet "http://127.0.0.1:8000/health" $ok2 = TryGet "http://127.0.0.1:8000/version" $ok3 = TryGet "http://127.0.0.1:8000/license/status" # expect 401 without token if (-not ($ok1 -and $ok2)) { Write-Host "" Write-Host "[AZA DRY-RUN] API test failed. Inspecting container state..." docker compose ps Write-Host "" Write-Host "[AZA DRY-RUN] docker inspect (exit/status) for aza-api:" $cid = docker compose ps -q aza-api if ($cid) { docker inspect $cid --format "State.Status={{.State.Status}} ExitCode={{.State.ExitCode}} Error={{.State.Error}}" } else { Write-Host "No container id for aza-api found." } Write-Host "" Write-Host "[AZA DRY-RUN] Last 400 log lines for aza-api:" docker compose logs --tail=400 aza-api Write-Host "" Write-Host "[AZA DRY-RUN] Hint: If it hangs at startup, it is usually an import error or missing dependency." } Write-Host "" Write-Host "[AZA DRY-RUN] Done. Press Enter to close." Read-Host