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