41 lines
No EOL
965 B
Bash
41 lines
No EOL
965 B
Bash
#!/bin/bash
|
|
|
|
# Arguments passed from Keepalived:
|
|
# $1 = Primary Service Name (e.g., "gitea")
|
|
# $2 = Dependency Name (e.g., "postgres") - Optional
|
|
|
|
SERVICE_LIST="$1"
|
|
DEPENDENCY="$2"
|
|
|
|
# Function to check container status
|
|
check_container() {
|
|
local container_name=$1
|
|
if [ -z "$container_name" ]; then return 0; fi
|
|
|
|
# Check if container is running
|
|
# We use --filter to ensure we only get a match for the exact name
|
|
STATUS=$(docker inspect -f '{{.State.Running}}' "$container_name" 2>/dev/null)
|
|
|
|
if [ "$STATUS" == "true" ]; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 1. Check Primary Service
|
|
if ! check_container "$SERVICE_LIST"; then
|
|
echo "CRITICAL: Service $SERVICE_LIST is down."
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Check Dependency (if provided)
|
|
if [ -n "$DEPENDENCY" ]; then
|
|
if ! check_container "$DEPENDENCY"; then
|
|
echo "CRITICAL: Dependency $DEPENDENCY is down."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 3. Everything is healthy
|
|
exit 0 |