From e8f7ba68015e928d1e883ed5dbe9d84c4dde1f52 Mon Sep 17 00:00:00 2001 From: Ian Fijolek Date: Mon, 29 Jul 2019 15:01:07 -0700 Subject: [PATCH] Update docker scripts to work with a proxy --- scripts/docker_check.sh | 25 +++++++++++++++++++------ scripts/docker_healthcheck.sh | 30 ++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/scripts/docker_check.sh b/scripts/docker_check.sh index b4c9253..4633574 100755 --- a/scripts/docker_check.sh +++ b/scripts/docker_check.sh @@ -7,19 +7,32 @@ set -e # Checks the most recent state exit code of a Docker container ################# -container_name=$1 +# Docker host will default to a socket +# To override, export DOCKER_HOST to a new hostname +DOCKER_HOST="${DOCKER_HOST:=socket}" +container_name="$1" + +# Curls Docker either using a socket or URL +function curl_docker { + local path="$1" + if [ "$DOCKER_HOST" == "socket" ]; then + curl --unix-socket /var/run/docker.sock "http://localhost/$path" 2>/dev/null + else + curl "http://${DOCKER_HOST}/$path" 2>/dev/null + fi +} # Returns caintainer ID for a given container name function get_container_id { - local container_name=$1 - curl --unix-socket /var/run/docker.sock 'http://localhost/containers/json?all=1' 2>/dev/null \ + local container_name="$1" + curl_docker 'containers/json?all=1' \ | jq -r ".[] | {Id, Name: .Names[]} | select(.Name == \"/${container_name}\") | .Id" } # Returns container JSON function inspect_container { local container_id=$1 - curl --unix-socket /var/run/docker.sock http://localhost/containers/$container_id/json 2>/dev/null + curl_docker "containers/$container_id/json" } if [ -z "$container_name" ]; then @@ -33,6 +46,6 @@ if [ -z "$container_id" ]; then echo "ERROR: Could not find container with name: $container_name" exit 1 fi -exit_code=$(inspect_container $container_id | jq -r .State.ExitCode) +exit_code=$(inspect_container "$container_id" | jq -r .State.ExitCode) -exit $exit_code +exit "$exit_code" diff --git a/scripts/docker_healthcheck.sh b/scripts/docker_healthcheck.sh index 7cbd6fc..2196860 100755 --- a/scripts/docker_healthcheck.sh +++ b/scripts/docker_healthcheck.sh @@ -1,4 +1,5 @@ #! /bin/bash +set -e ################# # docker_healthcheck.sh @@ -6,19 +7,32 @@ # Returns the results of a Docker Healthcheck for a container ################# -container_name=$1 +# Docker host will default to a socket +# To override, export DOCKER_HOST to a new hostname +DOCKER_HOST="${DOCKER_HOST:=socket}" +container_name="$1" + +# Curls Docker either using a socket or URL +function curl_docker { + local path="$1" + if [ "$DOCKER_HOST" == "socket" ]; then + curl --unix-socket /var/run/docker.sock "http://localhost/$path" 2>/dev/null + else + curl "http://${DOCKER_HOST}/$path" 2>/dev/null + fi +} # Returns caintainer ID for a given container name function get_container_id { - local container_name=$1 - curl --unix-socket /var/run/docker.sock 'http://localhost/containers/json?all=1' 2>/dev/null \ + local container_name="$1" + curl_docker 'containers/json?all=1' \ | jq -r ".[] | {Id, Name: .Names[]} | select(.Name == \"/${container_name}\") | .Id" } # Returns container JSON function inspect_container { - local container_id=$1 - curl --unix-socket /var/run/docker.sock http://localhost/containers/$container_id/json 2>/dev/null + local container_id="$1" + curl_docker "containers/$container_id/json" } if [ -z "$container_name" ]; then @@ -27,14 +41,14 @@ if [ -z "$container_name" ]; then exit 1 fi -container_id=$(get_container_id $container_name) +container_id=$(get_container_id "$container_name") if [ -z "$container_id" ]; then echo "ERROR: Could not find container with name: $container_name" exit 1 fi -health=$(inspect_container $container_id | jq -r '.State.Health.Status') +health=$(inspect_container "$container_id" | jq -r '.State.Health.Status') -case $health in +case "$health" in "null") echo "No healthcheck results" ;;