Files
git.stella-ops.org/devops/docker/healthcheck.sh
2026-02-16 07:33:20 +02:00

34 lines
855 B
Bash

#!/bin/sh
set -eu
HOST="${HEALTH_HOST:-127.0.0.1}"
PORT="${HEALTH_PORT:-8080}"
LIVENESS_PATH="${LIVENESS_PATH:-/health/liveness}"
READINESS_PATH="${READINESS_PATH:-/health/readiness}"
USER_AGENT="stellaops-healthcheck"
fetch() {
target_path="$1"
url="http://${HOST}:${PORT}${target_path}"
if command -v curl >/dev/null 2>&1; then
curl -sf --max-time "${HEALTH_TIMEOUT:-4}" \
-H "User-Agent: ${USER_AGENT}" \
"$url" >/dev/null
elif command -v wget >/dev/null 2>&1; then
wget -qO- "$url" \
--header="User-Agent: ${USER_AGENT}" \
--timeout="${HEALTH_TIMEOUT:-4}" >/dev/null
else
# Fallback: bash /dev/tcp (liveness only, no HTTP headers)
exec 3<>"/dev/tcp/${HOST}/${PORT}" && exec 3>&-
fi
}
fail=0
if ! fetch "$LIVENESS_PATH"; then
fail=1
fi
if ! fetch "$READINESS_PATH"; then
fail=1
fi
exit "$fail"