#!/bin/bash DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" . "$DIR/.common.sh" if [ "$1" == "" ]; then echo "Waits for a docker container to be healthy." echo " Usage: $0 docker-container 30" echo "or use the third parameter to use the docker healthcheck instead of the internal one." echo " Usage: $0 docker-container 30 true" exit 1 fi SERVICE=$1 LIMIT=${2:-90} USE_DOCKER_HEALTHCHECK=${3:-false} echo -e "${BLUE}❯ ${CYAN}Waiting for healthy: ${YELLOW}${SERVICE}${RESET}" is_up() { if [ "$USE_DOCKER_HEALTHCHECK" == "true" ]; then docker inspect --format='{{.State.Health.Status}}' "$SERVICE" | grep -qi "healthy" else docker exec "$SERVICE" /bin/healthcheck.sh fi } i=0 while ! is_up; do i=$((i + 1)) if [ "$i" == "$LIMIT" ]; then echo -e "${BLUE}❯ ${RED}Timed out waiting for healthy${RESET}" docker logs --tail 50 "$SERVICE" exit 1 fi sleep 1 done echo "" echo -e "${BLUE}❯ ${GREEN}Healthy!${RESET}"