small, multi-platform (amd64, arm64) images
[dmaap/kafka11aaf.git] / src / main / docker / Dockerfile
index dd01792..d5ce240 100644 (file)
@@ -1,73 +1,76 @@
-#########
-#  ============LICENSE_START====================================================
-#  org.onap.dmaap
-#  ===========================================================================
-#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-#  Modifications Copyright (C) 2018 Nokia. All rights reserved.
-#  ===========================================================================
-#  Licensed under the Apache License, Version 2.0 (the "License");
-#  you may not use this file except in compliance with the License.
-#  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#  ============LICENSE_END====================================================
-#
-FROM openjdk:8-alpine
-
-MAINTAINER DMAAP Team
-
-ARG kafka_version=0.11.0.1
+FROM alpine:3.7
+
+ENV LANG C.UTF-8
+
+RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
+RUN { \
+               echo '#!/bin/sh'; \
+               echo 'set -e'; \
+               echo; \
+               echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
+       } > /usr/local/bin/docker-java-home \
+       && chmod +x /usr/local/bin/docker-java-home
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk/jre
+ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
+
+ENV JAVA_VERSION 8u212
+ENV JAVA_ALPINE_VERSION 8.212.04-r0
+
+RUN set -x \
+       && apk add --no-cache \
+               openjdk8-jre="$JAVA_ALPINE_VERSION" \
+       && [ "$JAVA_HOME" = "$(docker-java-home)" ]
+
+ARG kafka_version=1.1.1
 ARG scala_version=2.12
 
+RUN apk add --no-cache unzip wget docker curl jq coreutils libstdc++ ca-certificates bash java-cacerts
+
+ENV KAFKA_VERSION=$kafka_version SCALA_VERSION=$scala_version
+
+COPY download-kafka.sh \
+     kafka_server_jaas.conf \
+     org.onap.dmaap.mr.trust.jks \
+     org.onap.dmaap.mr.p12 \
+     org.onap.dmaap.mr.keyfile \
+     cadi.properties \
+     kafka11aaf-jar-with-dependencies.jar \
+     dmaapMMAgent.jar \
+     kafka-run-class.sh \
+     /tmp/
+
+COPY mmagent.config \
+     consumer.properties \
+     producer.properties \
+     /opt/etc/
+
+RUN chmod a+x /tmp/download-kafka.sh && sync && /tmp/download-kafka.sh && tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt && rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz && ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka
+
 VOLUME ["/kafka"]
 
-ENV KAFKA_VERSION $kafka_version
-ENV SCALA_VERSION $scala_version
 ENV KAFKA_HOME /opt/kafka
 ENV PATH ${PATH}:${KAFKA_HOME}/bin
 
-COPY broker-list.sh \
-    create-topics.sh \
-    start-kafka.sh \
-    start-kafkaOrMirrorMaker.sh \
-    start-mirrormaker.sh \
-    /usr/bin/ 
+COPY start-kafka.sh \
+     broker-list.sh \
+     create-topics.sh \
+     start-kafkaOrMirrorMaker.sh \
+     start-mirrormaker.sh \
+     /usr/bin/
 
-COPY mmagent.config \
-    consumer.properties \
-    producer.properties \
-    /opt/etc/
-
-COPY cadi.properties \
-    download-kafka.sh \
-    kafka_server_jaas.conf \
-    kafka-run-class.sh \
-    keyfilenew \
-    org.onap.dmaap.mr.p12 \
-    truststoreONAPall.jks \
-    kafka11aaf-jar-with-dependencies.jar \
-    dmaapMMAgent.jar \
-    /tmp/
-
-RUN apk add --update bash unzip wget curl docker jq coreutils && \
-    chmod a+x /usr/bin/start-kafka.sh && \
+RUN mkdir /opt/logs
+RUN touch /opt/logs/mmagent.log
+# The scripts need to have executable permission
+RUN chmod a+x /usr/bin/start-kafka.sh && \
     chmod a+x /usr/bin/broker-list.sh && \
     chmod a+x /usr/bin/start-kafkaOrMirrorMaker.sh && \
     chmod a+x /usr/bin/start-mirrormaker.sh && \
-    chmod a+x /usr/bin/create-topics.sh && \
-    chmod a+x /tmp/download-kafka.sh && \
-    sync && \
-    /tmp/download-kafka.sh && \
-    tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt && \
-    rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz && \
-    ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka
-    
-
-WORKDIR /usr/bin
-CMD ["start-kafkaOrMirrorMaker.sh"]
\ No newline at end of file
+    chmod a+x /usr/bin/create-topics.sh
+# Use "exec" form so that it runs as PID 1 (useful for graceful shutdown)
+CMD ["start-kafkaOrMirrorMaker.sh"]
+
+RUN addgroup -S -g 1000  mrkafka  \
+    && adduser -S  -u 1000 mrkafka  mrkafka \
+    && chown -R mrkafka:mrkafka  /opt/kafka/ /opt/logs/ /opt/etc/ /kafka/  /usr/bin/ /tmp/
+
+USER mrkafka