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 "$@"