wait-healthy 705 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/bin/bash
  2. CYAN='\E[1;36m'
  3. YELLOW='\E[1;33m'
  4. BLUE='\E[1;34m'
  5. GREEN='\E[1;32m'
  6. RED='\E[1;31m'
  7. RESET='\E[0m'
  8. if [ "$1" == "" ]; then
  9. echo "Waits for a docker container to be healthy."
  10. echo "Usage: $0 docker-container"
  11. exit 1
  12. fi
  13. SERVICE=$1
  14. LOOPCOUNT=0
  15. HEALTHY=
  16. LIMIT=${2:-90}
  17. echo -e "${BLUE}❯ ${CYAN}Waiting for healthy: ${YELLOW}${SERVICE}${RESET}"
  18. until [ "${HEALTHY}" = "healthy" ]; do
  19. echo -n "."
  20. sleep 1
  21. HEALTHY="$(docker inspect -f '{{.State.Health.Status}}' $SERVICE)"
  22. ((LOOPCOUNT++))
  23. if [ "$LOOPCOUNT" == "$LIMIT" ]; then
  24. echo ""
  25. echo ""
  26. echo -e "${BLUE}❯ ${RED}Timed out waiting for healthy${RESET}"
  27. exit 1
  28. fi
  29. done
  30. echo ""
  31. echo -e "${BLUE}❯ ${GREEN}Healthy!${RESET}"