github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/images/kafka/docker-entrypoint.sh (about) 1 #!/usr/bin/env bash 2 3 # This script will either start the kafka server, or run the user 4 # specified command. 5 6 # Exit immediately if a pipeline returns a non-zero status. 7 set -e 8 9 KAFKA_HOME=/opt/kafka 10 KAFKA_EXE=${KAFKA_HOME}/bin/kafka-server-start.sh 11 KAFKA_SERVER_PROPERTIES=${KAFKA_HOME}/config/server.properties 12 13 # handle starting the kafka server with an option 14 # (genericly handled, but only --override known to me at this time) 15 if [ "${1:0:1}" = '-' ]; then 16 set -- ${KAFKA_EXE} ${KAFKA_SERVER_PROPERTIES} "$@" 17 fi 18 19 # handle default (i.e. no custom options or commands) 20 if [ "$1" = "${KAFKA_EXE}" ]; then 21 22 # add the server.properties to the command 23 set -- ${KAFKA_EXE} ${KAFKA_SERVER_PROPERTIES} 24 25 # compute the advertised host name if a command was specified 26 if [[ -z ${KAFKA_ADVERTISED_HOST_NAME} && -n ${KAFKA_ADVERTISED_HOST_NAME_COMMAND} ]] ; then 27 export KAFKA_ADVERTISED_HOST_NAME=$(eval ${KAFKA_ADVERTISED_HOST_NAME_COMMAND}) 28 fi 29 30 # compute the advertised port if a command was specified 31 if [[ -z ${KAFKA_ADVERTISED_PORT} && -n ${KAFKA_ADVERTISED_PORT_COMMAND} ]] ; then 32 export KAFKA_ADVERTISED_PORT=$(eval ${KAFKA_ADVERTISED_PORT_COMMAND}) 33 fi 34 35 # default to auto set the broker id 36 if [ -z "$KAFKA_BROKER_ID" ] ; then 37 export KAFKA_BROKER_ID=-1 38 fi 39 40 # update server.properties by searching for envinroment variables named 41 # KAFKA_* and converting them to properties in the kafka server properties file. 42 for ENV_ENTRY in $(env | grep "^KAFKA_") ; do 43 # skip some entries that should do not belong in server.properties 44 if [[ $ENV_ENTRY =~ ^KAFKA_HOME= ]] ; then continue ; fi 45 if [[ $ENV_ENTRY =~ ^KAFKA_EXE= ]] ; then continue ; fi 46 if [[ $ENV_ENTRY =~ ^KAFKA_SERVER_PROPERTIES= ]] ; then continue ; fi 47 if [[ $ENV_ENTRY =~ ^KAFKA_ADVERTISED_HOST_NAME_COMMAND= ]] ; then continue ; fi 48 if [[ $ENV_ENTRY =~ ^KAFKA_ADVERTISED_PORT_COMMAND= ]] ; then continue ; fi 49 # transform KAFKA_XXX_YYY to xxx.yyy 50 KAFKA_PROPERTY_NAME="$(echo ${ENV_ENTRY%%=*} | sed -e 's/^KAFKA_//;s/_/./g' | tr '[:upper:]' '[:lower:]')" 51 # get property value 52 KAFKA_PROPERTY_VALUE="${ENV_ENTRY#*=}" 53 # update server.properties 54 if grep -q "^\s*#\?\s*${KAFKA_PROPERTY_NAME}" ${KAFKA_SERVER_PROPERTIES} ; then 55 # the property is already defined (maybe even commented out), so edit the file 56 sed -i -e "s|^\s*${KAFKA_PROPERTY_NAME}\s*=.*$|${KAFKA_PROPERTY_NAME}=${KAFKA_PROPERTY_VALUE}|" ${KAFKA_SERVER_PROPERTIES} 57 sed -i -e "s|^\s*#\s*${KAFKA_PROPERTY_NAME}\s*=.*$|${KAFKA_PROPERTY_NAME}=${KAFKA_PROPERTY_VALUE}|" ${KAFKA_SERVER_PROPERTIES} 58 else 59 echo "${KAFKA_PROPERTY_NAME}=${KAFKA_PROPERTY_VALUE}">>${KAFKA_SERVER_PROPERTIES} 60 fi 61 done 62 fi 63 64 exec "$@"