WorkTracker/.vscode/compose-up.ps1
MaddoScientisto 273b8d5a69
All checks were successful
Publish Container / publish (push) Successful in 3m14s
feat: Add Docker compose scripts for starting and stopping services with health checks
2026-04-20 21:17:24 +02:00

72 lines
2.3 KiB
PowerShell

param(
[int]$TimeoutSeconds = 120
)
Write-Host "Starting docker compose (debug) in detached mode..."
docker compose up --build -d
$composeExit = $LASTEXITCODE
$start = [DateTime]::UtcNow
$containerSeen = $false
while (([DateTime]::UtcNow - $start).TotalSeconds -lt $TimeoutSeconds) {
$container = docker ps --filter "name=worktracker-dev" --format "{{.Names}}" 2>$null
if ($container -and $container.Trim() -ne "") {
if (-not $containerSeen) {
Write-Host "Found container: $container"
$containerSeen = $true
}
# After container appears, wait a short inner timeout for the app to respond
$innerStart = [DateTime]::UtcNow
$innerTimeout = 30
while (([DateTime]::UtcNow - $innerStart).TotalSeconds -lt $innerTimeout) {
try {
$resp = Invoke-WebRequest -UseBasicParsing -Uri http://localhost:8002/ -TimeoutSec 2 -ErrorAction Stop
if ($resp.StatusCode -ge 200 -and $resp.StatusCode -lt 400) {
Write-Host "Application responded (HTTP $($resp.StatusCode)). Ready. Opening browser..."
try {
Start-Process "http://localhost:8002/"
} catch {
Write-Host "Failed to open browser: $_"
}
exit 0
}
} catch {
Start-Sleep -Seconds 1
}
}
Write-Host "Container started but application did not respond within $innerTimeout seconds. Collecting logs..."
break
}
Start-Sleep -Seconds 1
}
Write-Error "Timed out waiting for container or application to become ready after $TimeoutSeconds seconds. Gathering diagnostics..."
Write-Host "-- docker compose ps -- (all services) --"
try {
docker compose ps
} catch {
Write-Host "(ps failed): $_"
}
Write-Host "-- docker ps -a (filtered) --"
try {
docker ps -a --filter "name=worktracker-dev"
} catch {
Write-Host "(docker ps failed): $_"
}
Write-Host "-- docker compose logs (last 200 lines for service 'worktracker') --"
try {
docker compose logs --no-color --tail 200 worktracker
} catch {
Write-Host "(logs failed): $_"
}
if ($composeExit -ne 0) {
Write-Error "The initial 'docker compose up' returned exit code $composeExit. Check above logs for details."
}
exit 1