You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.7 KiB

# Diagnose Docker Desktop engine issues
# Usage: npm run dev:diagnose-docker
$ErrorActionPreference = "Continue"
. (Join-Path $PSScriptRoot "lib.ps1")
Write-Host "=== Docker diagnose ===" -ForegroundColor Cyan
$drive = (Get-Item $script:DevConfig.ProjectRoot).PSDrive.Name
$freeGb = [math]::Round((Get-PSDrive $drive).Free / 1GB, 1)
Write-Host "Disk free on ${drive}: ${freeGb} GB"
if ($freeGb -lt 10) {
Write-Host "[WARN] Low disk space often causes Docker engine 500 / IPC timeout" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "WSL distros:"
$distro = Get-DevWslDistro
if ($distro) {
Write-Host " dev distro: $distro"
} else {
Write-Host " [WARN] no Linux WSL distro (only docker-desktop?). Run: wsl --install -d Ubuntu-22.04" -ForegroundColor Yellow
}
wsl -l -v
Write-Host ""
Write-Host "Docker engine status: $(Get-DockerEngineStatus)"
$info = Invoke-DockerInfoSafe
if ($info.Output) {
Write-Host $info.Output.Substring(0, [Math]::Min(800, $info.Output.Length))
}
Write-Host ""
Write-Host "Recommendation:" -ForegroundColor Cyan
Write-Host " Docker Desktop IPC/WSL engine stuck is a known Windows issue."
Write-Host " Do NOT use DockerCli -SwitchDaemon (makes it worse)."
Write-Host ""
Write-Host " Permanent dev path (recommended):"
Write-Host " npm run dev:infra:setup # mysql+redis in WSL, no Docker Desktop"
Write-Host " npm run dev:start # DEV_INFRA_MODE=native"
Write-Host ""
Write-Host " If you must fix Docker Desktop:"
Write-Host " 1. wsl --shutdown (admin)"
Write-Host " 2. Quit Docker Desktop, restart PC"
Write-Host " 3. Ensure C: has 20GB+ free (compact docker-desktop-data vhdx)"
Write-Host " 4. Update Docker Desktop + WSL: wsl --update"