From 7f3f92e88364f8bbcbb0d06ec9b1a2a46e09cad0 Mon Sep 17 00:00:00 2001 From: Ken Date: Sat, 3 Feb 2018 23:53:18 +0100 Subject: [PATCH] change version of kafka, correct PR 32 Full configuration --- kafka/Dockerfile | 2 +- kafka/scripts/start-kafka.sh | 58 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/kafka/Dockerfile b/kafka/Dockerfile index f6a9004..3b44397 100644 --- a/kafka/Dockerfile +++ b/kafka/Dockerfile @@ -4,7 +4,7 @@ FROM java:openjdk-8-jre ENV DEBIAN_FRONTEND noninteractive ENV SCALA_VERSION 2.11 -ENV KAFKA_VERSION 0.10.1.0 +ENV KAFKA_VERSION 0.10.2.1 ENV KAFKA_HOME /opt/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION" # Install Kafka, Zookeeper and other needed things diff --git a/kafka/scripts/start-kafka.sh b/kafka/scripts/start-kafka.sh index 168fc97..bdc9a7c 100755 --- a/kafka/scripts/start-kafka.sh +++ b/kafka/scripts/start-kafka.sh @@ -1,12 +1,13 @@ -#!/bin/sh +#!/bin/bash # Optional ENV variables: +# +# Any variable prefixed with KAFKA will be transformed to name of parameter for example +# KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false' will set auto.create.topic to false +# # * ADVERTISED_HOST: the external ip for the container, e.g. `docker-machine ip \`docker-machine active\`` # * ADVERTISED_PORT: the external port for Kafka, e.g. 9092 # * ZK_CHROOT: the zookeeper chroot that's used by Kafka (without / prefix), e.g. "kafka" -# * LOG_RETENTION_HOURS: the minimum age of a log file in hours to be eligible for deletion (default is 168, for 1 week) -# * LOG_RETENTION_BYTES: configure the size at which segments are pruned from the log, (default is 1073741824, for 1GB) -# * NUM_PARTITIONS: configure the default number of log partitions per topic # Configure advertised host/port if we run in helios if [ ! -z "$HELIOS_PORT_kafka" ]; then @@ -17,18 +18,18 @@ fi # Set the external host and port if [ ! -z "$ADVERTISED_HOST" ]; then echo "advertised host: $ADVERTISED_HOST" - if grep -q "^advertised.host.name" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.host.name)=(.*)/\1=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties + if grep advertised.host.name $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#?(advertised.host.name)=(.*)/advertised.host.name=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties else - echo "advertised.host.name=$ADVERTISED_HOST" >> $KAFKA_HOME/config/server.properties + echo advertised.host.name=$ADVERTISED_HOST >> $KAFKA_HOME/config/server.properties fi fi if [ ! -z "$ADVERTISED_PORT" ]; then echo "advertised port: $ADVERTISED_PORT" - if grep -q "^advertised.port" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.port)=(.*)/\1=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties + if grep advertised.port $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#?(advertised.port)=(.*)/advertised.port=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties else - echo "advertised.port=$ADVERTISED_PORT" >> $KAFKA_HOME/config/server.properties + echo advertised.port=$ADVERTISED_PORT >> $KAFKA_HOME/config/server.properties fi fi @@ -49,27 +50,26 @@ if [ ! -z "$ZK_CHROOT" ]; then sed -r -i "s/(zookeeper.connect)=(.*)/\1=localhost:2181\/$ZK_CHROOT/g" $KAFKA_HOME/config/server.properties fi -# Allow specification of log retention policies -if [ ! -z "$LOG_RETENTION_HOURS" ]; then - echo "log retention hours: $LOG_RETENTION_HOURS" - sed -r -i "s/(log.retention.hours)=(.*)/\1=$LOG_RETENTION_HOURS/g" $KAFKA_HOME/config/server.properties -fi -if [ ! -z "$LOG_RETENTION_BYTES" ]; then - echo "log retention bytes: $LOG_RETENTION_BYTES" - sed -r -i "s/#(log.retention.bytes)=(.*)/\1=$LOG_RETENTION_BYTES/g" $KAFKA_HOME/config/server.properties -fi +### START LICENSED CODE ### +# The following is copied from https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh +# under ASL v2 license -# Configure the default number of log partitions per topic -if [ ! -z "$NUM_PARTITIONS" ]; then - echo "default number of partition: $NUM_PARTITIONS" - sed -r -i "s/(num.partitions)=(.*)/\1=$NUM_PARTITIONS/g" $KAFKA_HOME/config/server.properties -fi +for VAR in `env` +do + echo considering $VAR + if [[ $VAR =~ ^KAFKA_ && ! $VAR =~ ^KAFKA_HOME ]]; then + kafka_name=`echo "$VAR" | sed -r "s/KAFKA_(.*)=.*/\1/g" | tr '[:upper:]' '[:lower:]' | tr _ .` + env_var=`echo "$VAR" | sed -r "s/.*=(.*)/\1/g"` + if egrep -q "(^|^#)$kafka_name=" $KAFKA_HOME/config/server.properties; then + sed -r -i "s@(^|^#)($kafka_name)=(.*)@\2=$env_var@g" $KAFKA_HOME/config/server.properties #note that no config values may contain an '@' char + else + echo "$kafka_name=$env_var" >> $KAFKA_HOME/config/server.properties + fi + echo assign "$kafka_name=$env_var" + fi +done -# Enable/disable auto creation of topics -if [ ! -z "$AUTO_CREATE_TOPICS" ]; then - echo "auto.create.topics.enable: $AUTO_CREATE_TOPICS" - echo "auto.create.topics.enable=$AUTO_CREATE_TOPICS" >> $KAFKA_HOME/config/server.properties -fi +### END LICENSED CODE ### # Run Kafka $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties