Files
EventHubBack/scripts/ensure-docker-daemon.sh
T
aleksey 214955399e
CI / test (push) Failing after 4m15s
CI: wait for Docker daemon before buildx on WSL runner.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 12:41:06 +03:00

66 lines
1.8 KiB
Bash

#!/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