mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-10-08 19:23:47 +00:00
48 lines
1.1 KiB
Bash
Executable File
48 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
#########
|
|
#
|
|
# wait for docker socket to be ready, then run the rest of the command
|
|
#
|
|
########
|
|
RETRIES=${RETRIES:-"-1"}
|
|
WAIT=${WAIT:=10}
|
|
[ -n "$DEBUG" ] && set -x
|
|
|
|
# keep retrying until docker is ready or we hit our limut
|
|
retry_or_fail() {
|
|
local retry_count=0
|
|
local success=1
|
|
local cmd=$1
|
|
local retryMax=$2
|
|
local retrySleep=$3
|
|
local message=$4
|
|
until [[ $retry_count -ge $retryMax && $retryMax -ne -1 ]]; do
|
|
echo "trying to $message"
|
|
set +e
|
|
$cmd
|
|
success=$?
|
|
set -e
|
|
[[ $success == 0 ]] && break
|
|
retry_count=$(( $retry_count+1 )) || true
|
|
echo "attempt number $retry_count failed to $message, sleeping $retrySleep seconds..."
|
|
sleep $retrySleep
|
|
done
|
|
# did we succeed?
|
|
if [[ $success != 0 ]]; then
|
|
echo "failed to $message after $retryMax tries. Exiting..." >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
connect_to_docker() {
|
|
[ -S /var/run/docker.sock ] || return 1
|
|
curl --unix-socket /var/run/docker.sock http://localhost/containers/json >/dev/null 2>&1 || return 1
|
|
}
|
|
# try to connect to docker
|
|
retry_or_fail connect_to_docker $RETRIES $WAIT "connect to docker"
|
|
|
|
# if we got here, we succeeded
|
|
$@
|