Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
# Ensure Docker daemon is reachable on WSL host runner (Docker Desktop integration).
|
||||
# Usage: ensure-docker-daemon.sh [max_wait_seconds]
|
||||
set -euo pipefail
|
||||
|
||||
MAX_WAIT="${1:-240}"
|
||||
INTERVAL=5
|
||||
DEADLINE=$((SECONDS + MAX_WAIT))
|
||||
|
||||
docker_ok() {
|
||||
timeout 8 docker info >/dev/null 2>&1
|
||||
}
|
||||
|
||||
find_docker_host() {
|
||||
local candidates=(
|
||||
"${DOCKER_HOST:-}"
|
||||
"unix:///var/run/docker.sock"
|
||||
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock"
|
||||
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.proxy.sock"
|
||||
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.container-proxy.sock"
|
||||
)
|
||||
local host path
|
||||
for host in "${candidates[@]}"; do
|
||||
[[ -n "${host}" ]] || continue
|
||||
path="${host#unix://}"
|
||||
if [[ -S "${path}" ]] && DOCKER_HOST="${host}" docker_ok; then
|
||||
export DOCKER_HOST="${host}"
|
||||
echo "Docker ready (${host})"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
if docker_ok; then
|
||||
echo "Docker ready (default socket)"
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
start_docker_desktop() {
|
||||
local exe="/mnt/c/Program Files/Docker/Docker/Docker Desktop.exe"
|
||||
if [[ -f "${exe}" ]]; then
|
||||
echo "Starting Docker Desktop..."
|
||||
powershell.exe -NoProfile -Command "Start-Process 'C:\\Program Files\\Docker\\Docker\\Docker Desktop.exe'" >/dev/null 2>&1 || true
|
||||
return 0
|
||||
fi
|
||||
echo "Docker Desktop executable not found"
|
||||
return 1
|
||||
}
|
||||
|
||||
attempt=0
|
||||
while (( SECONDS < DEADLINE )); do
|
||||
attempt=$((attempt + 1))
|
||||
if find_docker_host; then
|
||||
exit 0
|
||||
fi
|
||||
if (( attempt == 1 || attempt == 7 )); then
|
||||
start_docker_desktop || true
|
||||
fi
|
||||
echo "waiting for docker (${attempt}, $((DEADLINE - SECONDS))s left)..."
|
||||
sleep "${INTERVAL}"
|
||||
done
|
||||
|
||||
echo "Docker daemon not available after ${MAX_WAIT}s"
|
||||
echo "Hint: start Docker Desktop on Windows and enable WSL integration."
|
||||
exit 1
|
||||
Reference in New Issue
Block a user