small, multi-platform (amd64, arm64) images
[dmaap/kafka11aaf.git] / src / main / docker / Dockerfile
1 FROM alpine:3.7
2
3 ENV LANG C.UTF-8
4
5 RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
6 RUN { \
7                 echo '#!/bin/sh'; \
8                 echo 'set -e'; \
9                 echo; \
10                 echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
11         } > /usr/local/bin/docker-java-home \
12         && chmod +x /usr/local/bin/docker-java-home
13 ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk/jre
14 ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
15
16 ENV JAVA_VERSION 8u212
17 ENV JAVA_ALPINE_VERSION 8.212.04-r0
18
19 RUN set -x \
20         && apk add --no-cache \
21                 openjdk8-jre="$JAVA_ALPINE_VERSION" \
22         && [ "$JAVA_HOME" = "$(docker-java-home)" ]
23
24 ARG kafka_version=1.1.1
25 ARG scala_version=2.12
26
27 RUN apk add --no-cache unzip wget docker curl jq coreutils libstdc++ ca-certificates bash java-cacerts
28
29 ENV KAFKA_VERSION=$kafka_version SCALA_VERSION=$scala_version
30
31 COPY download-kafka.sh \
32      kafka_server_jaas.conf \
33      org.onap.dmaap.mr.trust.jks \
34      org.onap.dmaap.mr.p12 \
35      org.onap.dmaap.mr.keyfile \
36      cadi.properties \
37      kafka11aaf-jar-with-dependencies.jar \
38      dmaapMMAgent.jar \
39      kafka-run-class.sh \
40      /tmp/
41
42 COPY mmagent.config \
43      consumer.properties \
44      producer.properties \
45      /opt/etc/
46
47 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
48
49 VOLUME ["/kafka"]
50
51 ENV KAFKA_HOME /opt/kafka
52 ENV PATH ${PATH}:${KAFKA_HOME}/bin
53
54 COPY start-kafka.sh \
55      broker-list.sh \
56      create-topics.sh \
57      start-kafkaOrMirrorMaker.sh \
58      start-mirrormaker.sh \
59      /usr/bin/
60
61 RUN mkdir /opt/logs
62 RUN touch /opt/logs/mmagent.log
63 # The scripts need to have executable permission
64 RUN chmod a+x /usr/bin/start-kafka.sh && \
65     chmod a+x /usr/bin/broker-list.sh && \
66     chmod a+x /usr/bin/start-kafkaOrMirrorMaker.sh && \
67     chmod a+x /usr/bin/start-mirrormaker.sh && \
68     chmod a+x /usr/bin/create-topics.sh
69 # Use "exec" form so that it runs as PID 1 (useful for graceful shutdown)
70 CMD ["start-kafkaOrMirrorMaker.sh"]
71
72 RUN addgroup -S -g 1000  mrkafka  \
73     && adduser -S  -u 1000 mrkafka  mrkafka \
74     && chown -R mrkafka:mrkafka  /opt/kafka/ /opt/logs/ /opt/etc/ /kafka/  /usr/bin/ /tmp/
75
76 USER mrkafka