wait-healthy 696 B

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/bash
  2. DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  3. . "$DIR/.common.sh"
  4. if [ "$1" == "" ]; then
  5. echo "Waits for a docker container to be healthy."
  6. echo "Usage: $0 docker-container"
  7. exit 1
  8. fi
  9. SERVICE=$1
  10. LOOPCOUNT=0
  11. HEALTHY=
  12. LIMIT=${2:-90}
  13. echo -e "${BLUE}❯ ${CYAN}Waiting for healthy: ${YELLOW}${SERVICE}${RESET}"
  14. until [ "${HEALTHY}" = "healthy" ]; do
  15. echo -n "."
  16. sleep 1
  17. HEALTHY="$(docker inspect -f '{{.State.Health.Status}}' $SERVICE)"
  18. ((LOOPCOUNT++))
  19. if [ "$LOOPCOUNT" == "$LIMIT" ]; then
  20. echo -e "${BLUE}❯ ${RED}Timed out waiting for healthy${RESET}"
  21. docker logs --tail 50 "$SERVICE"
  22. exit 1
  23. fi
  24. done
  25. echo ""
  26. echo -e "${BLUE}❯ ${GREEN}Healthy!${RESET}"