small, multi-platform (amd64, arm64) images 09/92009/1
authorSimon Hrabos <simon.hrabos@tieto.com>
Thu, 25 Jul 2019 12:13:15 +0000 (14:13 +0200)
committerSimon Hrabos <simon.hrabos@tieto.com>
Thu, 25 Jul 2019 12:15:48 +0000 (14:15 +0200)
Modify kafka docker image due to arm64 compatibility

Issue-ID: INT-912
Issue-ID: INT-933
Signed-off-by: Simon Hrabos <simon.hrabos@tieto.com>
Change-Id: Ie2e359450812fd5ec92a3faf9c9162ae5c287331

pom.xml
src/main/docker/Dockerfile

diff --git a/pom.xml b/pom.xml
index 8ad9681..4d2563f 100644 (file)
--- a/pom.xml
+++ b/pom.xml
        </developers>
 
        <build>
+       <!-- Copy files to docker-stage to be included in image -->        
+        <resources>
+            <resource>
+                <targetPath>${basedir}/target/docker-stage</targetPath>
+                <directory>${basedir}/src/main/docker</directory>
+                    <includes>
+                        <include>*</include>
+                    </includes>
+            </resource>
+        </resources>
                <plugins>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                        </execution>
                                </executions>
                        </plugin>
-                       <plugin>
-                               <groupId>com.spotify</groupId>
-                               <artifactId>docker-maven-plugin</artifactId>
-                               <version>1.0.0</version>
-                               <configuration>
-                                       <imageName>onap/dmaap/kafka111</imageName>
-                                       <dockerDirectory>src/main/docker</dockerDirectory>
-                                       <serverId>docker-hub</serverId>
-                                       <imageTags>
-                                               <imageTag>${dockertag1}</imageTag>
-                                               <imageTag>${dockertag2}</imageTag>
-                                       </imageTags>
-                                       <resources>
-                                               <!-- <resource> <targetPath>/</targetPath> <directory>${dockerLocation}</directory> 
-                                                       <include>${project.build.finalName}.jar</include> </resource> -->
-                                               <resource>
-                                                       <targetPath>/</targetPath>
-                                                       <directory>${project.build.directory}</directory>
-                                                       <include>**/**</include>
-                                               </resource>
-                                               <resource>
-                                                       <targetPath>/</targetPath>
-                                                       <directory>${project.build.directory}</directory>
-                                                       <include>dmaapMMAgent.jar</include>
-                                               </resource>
-                                       </resources>
-                               </configuration>
-                               <executions>
-                                       <execution>
-                                               <id>build-image</id>
-                                               <phase>install</phase>
-                                               <goals>
-                                                       <goal>build</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <skipDockerBuild>${skip.docker.build}</skipDockerBuild>
-                                               </configuration>
-                                       </execution>
-
-                                       <execution>
-                                               <id>tag-image-project-version</id>
-                                               <phase>install</phase>
-                                               <goals>
-                                                       <goal>tag</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <image>onap/dmaap/kafka111</image>
-                                                       <newName>${docker.push.registry}/onap/dmaap/kafka111:${dockertag2}</newName>
-                                                       <skipDockerTag>${skip.docker.push}</skipDockerTag>
-                                               </configuration>
-                                       </execution>
-
-                                       <execution>
-                                               <id>tag-image-latest</id>
-                                               <phase>install</phase>
-                                               <goals>
-                                                       <goal>tag</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <image>onap/dmaap/kafka111</image>
-                                                       <newName>${docker.push.registry}/onap/dmaap/kafka111:${dockertag1}</newName>
-                                                       <skipDockerTag>${skip.docker.push}</skipDockerTag>
-                                               </configuration>
-                                       </execution>
-
-                                       <execution>
-                                               <id>push-image</id>
-                                               <phase>deploy</phase>
-                                               <goals>
-                                                       <goal>push</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <imageName>${docker.push.registry}/onap/dmaap/kafka111:${dockertag2}</imageName>
-                                                       <skipDockerPush>${skip.docker.push}</skipDockerPush>
-                                               </configuration>
-                                       </execution>
-
-                                       <execution>
-                                               <id>push-image-latest</id>
-                                               <phase>deploy</phase>
-                                               <goals>
-                                                       <goal>push</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <imageName>${docker.push.registry}/onap/dmaap/kafka111:${dockertag1}</imageName>
-                                                       <skipDockerPush>${skip.docker.push}</skipDockerPush>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin>
 
+                       <plugin>
+                               <artifactId>maven-resources-plugin</artifactId>
+                                 <version>2.7</version>
+                                 <executions>
+                                    <execution>
+                                         <id>copy-jar</id>
+                                         <phase>install</phase>
+                                         <goals>
+                                             <goal>copy-resources</goal>
+                                         </goals>
+                                         <configuration>
+                                             <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                                             <resources>
+                                                 <resource>
+                                                     <directory>${basedir}/target</directory>
+                                                     <includes>
+                                                         <include>dmaapMMAgent.jar</include>
+                                                         <include>kafka11aaf-jar-with-dependencies.jar</include>
+                                                     </includes>
+                                                 </resource>
+                                             </resources>
+                                         </configuration>
+                                     </execution>
+                                 </executions>
+                       </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
                                                        </execution>
                                                </executions>
                                        </plugin>
+                                       <!-- build docker image -->
+                                       <plugin>
+                                             <groupId>io.fabric8</groupId>
+                                             <artifactId>docker-maven-plugin</artifactId>
+                                             <version>0.28.0</version>
+                                                     <configuration>
+                                                 <verbose>${docker.verbose}</verbose>
+                                                 <apiVersion>${docker.apiVersion}</apiVersion>
+                                                 <pullRegistry>${docker.pull.registry}</pullRegistry>
+                                                 <pushRegistry>${docker.push.registry}</pushRegistry>
+                                                 <images>
+                                                     <image>
+                                                         <name>onap/dmaap/kafka01101</name>
+                                                         <build>
+                                                             <cleanup>try</cleanup>
+                                                            <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                                                            <dockerFile>Dockerfile</dockerFile>
+                                                             <tags>
+                                                                 <tag>${dockertag1}</tag>
+                                                                 <tag>${dockertag2}</tag>
+                                                             </tags>
+                                                         </build>
+                                                     </image>
+                                                 </images>
+                                             </configuration>
+                                             <executions>
+                                                 <execution>
+                                                     <id>generate-images</id>
+                                                     <phase>install</phase>
+                                                     <goals>
+                                                         <goal>build</goal>
+                                                     </goals>
+                                                 </execution>
+                                                 <execution>
+                                                     <id>push-images</id>
+                                                     <phase>deploy</phase>
+                                                     <goals>
+                                                         <goal>push</goal>
+                                                     </goals>
+                                                 </execution>
+                                             </executions>
+                                          </plugin>
                                </plugins>
                        </build>
                </profile>
index 46343cf..d5ce240 100644 (file)
@@ -1,24 +1,48 @@
-FROM anapsix/alpine-java
+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 --update unzip wget curl docker jq coreutils
+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
-ADD download-kafka.sh /tmp/download-kafka.sh
-ADD kafka_server_jaas.conf /tmp/kafka_server_jaas.conf
-ADD org.onap.dmaap.mr.trust.jks /tmp/org.onap.dmaap.mr.trust.jks
-ADD org.onap.dmaap.mr.p12 /tmp/org.onap.dmaap.mr.p12
-ADD org.onap.dmaap.mr.keyfile /tmp/org.onap.dmaap.mr.keyfile
-ADD cadi.properties /tmp/cadi.properties
-ADD mmagent.config /opt/etc/mmagent.config
-ADD consumer.properties /opt/etc/consumer.properties
-ADD producer.properties /opt/etc/producer.properties
-ADD kafka11aaf-jar-with-dependencies.jar /tmp/kafka11aaf-jar-with-dependencies.jar
-ADD dmaapMMAgent.jar /tmp/dmaapMMAgent.jar
-ADD kafka-run-class.sh /tmp/kafka-run-class.sh
+
+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
 
@@ -26,11 +50,14 @@ VOLUME ["/kafka"]
 
 ENV KAFKA_HOME /opt/kafka
 ENV PATH ${PATH}:${KAFKA_HOME}/bin
-ADD start-kafka.sh /usr/bin/start-kafka.sh
-ADD broker-list.sh /usr/bin/broker-list.sh
-ADD create-topics.sh /usr/bin/create-topics.sh
-ADD start-kafkaOrMirrorMaker.sh /usr/bin/start-kafkaOrMirrorMaker.sh
-ADD start-mirrormaker.sh /usr/bin/start-mirrormaker.sh
+
+COPY start-kafka.sh \
+     broker-list.sh \
+     create-topics.sh \
+     start-kafkaOrMirrorMaker.sh \
+     start-mirrormaker.sh \
+     /usr/bin/
+
 RUN mkdir /opt/logs
 RUN touch /opt/logs/mmagent.log
 # The scripts need to have executable permission