Files
linuxkit/projects/compose/image/waitfordocker.sh
Avi Deitcher e4512864ac add compose dynamic
Signed-off-by: Avi Deitcher <avi@deitcher.net>
2017-06-04 16:18:34 +03:00

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
$@