| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/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}"
|