linuxkit/pkg/cadvisor/waitfordocker.sh
Marco Mariani 959b6dd96d pkg/cadvisor
Signed-off-by: Marco Mariani <marco.mariani@alterway.fr>
2017-11-21 13:46:42 +01:00

50 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# copied from projects/compose, with fixes for shellcheck
# shellcheck disable=SC2039
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 limit
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 -eq 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 -ne 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
exec "$@"