Last active
May 23, 2017 08:20
-
-
Save m99coder/bac32afae708241a7e39703517b19030 to your computer and use it in GitHub Desktop.
Kafka/Zookeeper running in Docker – Control Bash Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # get platform to determine IP address accordingly | |
| PLATFORM=$(uname -s) | |
| if [ "$PLATFORM" == "Darwin" ]; then | |
| IP=$(ipconfig getifaddr en0) | |
| elif [ "$PLATFORM" == "Linux" ]; then | |
| IP=$(hostname -I) | |
| else | |
| echo "Unknown platform. Can not determine IP address that way." | |
| exit 1 | |
| fi | |
| case "$1" in | |
| # start services | |
| start) | |
| $0 stop | |
| echo "Starting services …" | |
| # zookeeper | |
| docker run -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 zookeeper:3.4 &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| echo " service \"zookeeper\" started" | |
| else | |
| echo " service \"zookeeper\" could not be started" | |
| exit 1 | |
| fi | |
| # kafka | |
| docker run -d --name kafka --env ZOOKEEPER_IP=$IP -p 9092:9092 -p 7203:7203 ches/kafka:0.10.2.0 &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| echo " service \"kafka\" started using IP $IP" | |
| else | |
| echo " service \"kafka\" could not be started" | |
| exit 1 | |
| fi | |
| ;; | |
| # stop services | |
| stop) | |
| echo "Stopping services …" | |
| services=( zookeeper kafka ) | |
| for i in "${services[@]}" | |
| do | |
| # check if service is or was running | |
| docker ps -a -f name=$i | grep -w $i &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| # stop service and remove container | |
| docker stop $i &> /dev/null && docker rm $i &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| echo " service \"$i\" stopped" | |
| else | |
| echo " service \"$i\" could not be stopped" | |
| exit 1 | |
| fi | |
| fi | |
| done | |
| ;; | |
| # clean containers | |
| clean) | |
| echo "Cleaning containers …" | |
| services=( zookeeper kafka ) | |
| for i in "${services[@]}" | |
| do | |
| # check if service is or was running | |
| docker ps -a -f name=$i | grep -w $i &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| # remove container | |
| docker rm $i &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| echo " container \"$i\" removed" | |
| else | |
| echo " container \"$i\" could not be removed" | |
| exit 1 | |
| fi | |
| fi | |
| done | |
| ;; | |
| # show status | |
| status) | |
| echo "Status …" | |
| services=( zookeeper kafka ) | |
| for i in "${services[@]}" | |
| do | |
| # check if service is running | |
| docker inspect $i &> /dev/null | |
| if [ $? -eq 0 ]; then | |
| echo "" | |
| echo $i | |
| echo " ID: $(docker inspect --format '{{ .Id }}' $i)" | |
| echo " Image: $(docker inspect --format '{{ .Config.Image }}' $i)" | |
| echo " IP Address: $(docker inspect --format '{{ .NetworkSettings.IPAddress }}' $i)" | |
| echo " Exposed Ports: $(docker inspect --format '{{ .Config.ExposedPorts }}' $i)" | |
| echo " Environment: $(docker inspect --format '{{ .Config.Env }}' $i)" | |
| fi | |
| done | |
| ;; | |
| # default | |
| *) | |
| echo "Usage: $0 {start|stop|clean|status}" | |
| exit 1 | |
| esac | |
| exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment