Files
EventHubFrontAdmin/scripts/ensure-docker-daemon.sh
aleksey 6d3e7a9315
CI / test (push) Failing after 8m51s
CI: build and push admin-ui image in CI; deploy-ift SSH-only.
Move docker build/push from deploy-ift to CI (EventHubBack pattern).
Deploy no longer needs docker.sock on the WSL runner.
Add ensure-docker-daemon.sh for Docker Desktop on host runner.
2026-07-10 23:04:11 +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