Skip to content

Instantly share code, notes, and snippets.

@m99coder
Last active May 23, 2017 08:20
Show Gist options
  • Select an option

  • Save m99coder/bac32afae708241a7e39703517b19030 to your computer and use it in GitHub Desktop.

Select an option

Save m99coder/bac32afae708241a7e39703517b19030 to your computer and use it in GitHub Desktop.
Kafka/Zookeeper running in Docker – Control Bash Script
#!/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