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