diff --git a/Dockerfile b/Dockerfile index 684643c..e3fece6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,41 +1,34 @@ -FROM centos:7 +FROM openjdk:8-jdk-alpine MAINTAINER Clement Laforet +# with help from David Smiley -RUN yum update -y && \ - yum install -y git wget unzip which && \ - yum clean all +ENV ZK_HOSTS=localhost:2181 \ + KM_VERSION=1.3.1.8 \ + KM_CONFIGFILE="conf/application.conf" -ENV JAVA_MAJOR=8 \ - JAVA_UPDATE=101 \ - JAVA_BUILD=13 +RUN apk update && \ + apk add bash ca-certificates wget && \ + update-ca-certificates && \ + mkdir -p /tmp && \ + cd /tmp && \ + wget https://github.com/yahoo/kafka-manager/archive/${KM_VERSION}.tar.gz && \ + tar -xf ${KM_VERSION}.tar.gz && \ + cd /tmp/kafka-manager-${KM_VERSION} && \ + ./sbt dist && \ + mkdir -p /opt && \ + unzip -d /opt/ ./target/universal/kafka-manager-${KM_VERSION}.zip && \ + mv /opt/kafka-manager-${KM_VERSION} /opt/kafka-manager && \ + rm -fr /tmp/* /root/.sbt /root/.ivy2 -RUN wget -nv --no-cookies --no-check-certificate \ - --header "Cookie: oraclelicense=accept-securebackup-cookie" \ - "http://download.oracle.com/otn-pub/java/jdk/${JAVA_MAJOR}u${JAVA_UPDATE}-b${JAVA_BUILD}/jdk-${JAVA_MAJOR}u${JAVA_UPDATE}-linux-x64.rpm" -O /tmp/jdk-${JAVA_MAJOR}u${JAVA_UPDATE}-linux-x64.rpm && \ - yum localinstall -y /tmp/jdk-${JAVA_MAJOR}u${JAVA_UPDATE}-linux-x64.rpm && \ - rm -f /tmp/jdk-${JAVA_MAJOR}u${JAVA_UPDATE}-linux-x64.rpm +COPY docker-kafka-manager.sh /opt/kafka-manager/bin/docker-kafka-manager.sh -ENV JAVA_HOME=/usr/java/jdk1.8.0_${JAVA_UPDATE} \ - ZK_HOSTS=localhost:2181 \ - KM_VERSION=1.3.1.6 \ - KM_REVISION=6cf43e383377a6b37df4faa04d9aff515a265b30 \ - KM_CONFIGFILE="conf/application.conf" +#VOLUME ["/opt/kafka-manager/conf"] -ADD start-kafka-manager.sh /kafka-manager-${KM_VERSION}/start-kafka-manager.sh +ENV PATH /opt/kafka-manager/bin:$PATH -RUN mkdir -p /tmp && \ - cd /tmp && \ - git clone https://github.com/yahoo/kafka-manager && \ - cd /tmp/kafka-manager && \ - git checkout ${KM_REVISION} && \ - echo 'scalacOptions ++= Seq("-Xmax-classfile-name", "200")' >> build.sbt && \ - ./sbt clean dist && \ - unzip -d / ./target/universal/kafka-manager-${KM_VERSION}.zip && \ - rm -fr /tmp/* /root/.sbt /root/.ivy2 && \ - chmod +x /kafka-manager-${KM_VERSION}/start-kafka-manager.sh +EXPOSE 9000 -WORKDIR /kafka-manager-${KM_VERSION} +WORKDIR /opt/kafka-manager -EXPOSE 9000 -ENTRYPOINT ["./start-kafka-manager.sh"] +ENTRYPOINT ["./bin/docker-kafka-manager.sh"] \ No newline at end of file diff --git a/docker-kafka-manager.sh b/docker-kafka-manager.sh new file mode 100755 index 0000000..386c19e --- /dev/null +++ b/docker-kafka-manager.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +cp "$KM_CONFIGFILE" conf/application.modified.conf +# local var; doesn't change global env +KM_CONFIGFILE=conf/application.modified.conf + +if [[ "$KM_USERNAME" != "" && "$KM_PASSWORD" != "" ]]; then + sed -i.bak '/^basicAuthentication/d' "$KM_CONFIGFILE" + echo 'basicAuthentication.enabled=true' >> "$KM_CONFIGFILE" + echo "basicAuthentication.username=${KM_USERNAME}" >> "$KM_CONFIGFILE" + echo "basicAuthentication.password=${KM_PASSWORD}" >> "$KM_CONFIGFILE" + echo 'basicAuthentication.realm="Kafka-Manager"' >> "$KM_CONFIGFILE" +fi +# this will allow you to customize +echo 'play.http.context = ${?KM_HTTP_CONTEXT}' >> "$KM_CONFIGFILE" + +exec ./bin/kafka-manager "-Dconfig.file=${KM_CONFIGFILE}" "${KM_ARGS}" "${@}" \ No newline at end of file diff --git a/start-kafka-manager.sh b/start-kafka-manager.sh deleted file mode 100644 index 92e9d47..0000000 --- a/start-kafka-manager.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -if [[ $KM_USERNAME != '' && $KM_PASSWORD != '' ]]; then - sed -i.bak '/^basicAuthentication/d' /kafka-manager-${KM_VERSION}/conf/application.conf - echo 'basicAuthentication.enabled=true' >> /kafka-manager-${KM_VERSION}/conf/application.conf - echo "basicAuthentication.username=${KM_USERNAME}" >> /kafka-manager-${KM_VERSION}/conf/application.conf - echo "basicAuthentication.password=${KM_PASSWORD}" >> /kafka-manager-${KM_VERSION}/conf/application.conf - echo 'basicAuthentication.realm="Kafka-Manager"' >> /kafka-manager-${KM_VERSION}/conf/application.conf -fi - -exec ./bin/kafka-manager -Dconfig.file=${KM_CONFIGFILE} "${KM_ARGS}" "${@}" \ No newline at end of file