48 lines
1.2 KiB
Bash
48 lines
1.2 KiB
Bash
|
#! /bin/bash
|
||
|
|
||
|
#################
|
||
|
# docker_healthcheck.sh
|
||
|
#
|
||
|
# Returns the results of a Docker Healthcheck for a container
|
||
|
#################
|
||
|
|
||
|
container_name=$1
|
||
|
|
||
|
# 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 \
|
||
|
| 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
|
||
|
}
|
||
|
|
||
|
if [ -z "$container_name" ]; then
|
||
|
echo "Usage: $0 container_name"
|
||
|
echo "Will return results of healthcheck for continer with provided name"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
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')
|
||
|
|
||
|
case $health in
|
||
|
"null")
|
||
|
echo "No healthcheck results"
|
||
|
;;
|
||
|
"starting|healthy")
|
||
|
echo "Status: '$health'"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Status: '$health'"
|
||
|
exit 1
|
||
|
esac
|