Reduce size of docker images for API 33/129733/3
authordanielhanrahan <daniel.hanrahan@est.tech>
Wed, 29 Jun 2022 12:51:39 +0000 (13:51 +0100)
committerdanielhanrahan <daniel.hanrahan@est.tech>
Wed, 13 Jul 2022 10:35:32 +0000 (11:35 +0100)
Remove unused jar files from image (not needed since spring boot)
Avoid creating extra layers when extracting tarball
Reduce size of Alpine image by 73% (956MB to 259MB)
Reduce size of OpenSuse image by 62% (1.12GB to 423MB)

Issue-ID: POLICY-4265
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: I321cd42ade294a8af40c64612037d3ca1cf58341

packages/policy-api-docker/src/main/docker/Dockerfile
packages/policy-api-docker/src/main/docker/suse.Dockerfile
packages/policy-api-tarball/src/main/package/tarball/assembly.xml

index 7fd6da9..8ac777c 100644 (file)
 # SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 #-------------------------------------------------------------------------------
+
+FROM busybox AS tarball
+RUN mkdir /packages /extracted
+COPY /maven/lib/policy-api.tar.gz /packages/
+RUN tar xvzf /packages/policy-api.tar.gz --directory /extracted/
+
 FROM onap/policy-jre-alpine:2.4.3
 
 LABEL maintainer="Policy Team"
@@ -37,18 +43,16 @@ ARG POLICY_LOGS=/var/log/onap/policy/api
 ENV POLICY_LOGS=$POLICY_LOGS
 ENV POLICY_HOME=$POLICY_HOME/api
 
-RUN mkdir -p $POLICY_LOGS $POLICY_HOME $POLICY_HOME/bin && \
-    chown -R policy:policy $POLICY_HOME $POLICY_LOGS && \
-    mkdir /packages
-COPY /maven/lib/policy-api.tar.gz /packages
-RUN tar xvfz /packages/policy-api.tar.gz --directory $POLICY_HOME && \
-    rm /packages/policy-api.tar.gz
+RUN mkdir -p $POLICY_HOME $POLICY_LOGS && \
+    chown -R policy:policy $POLICY_HOME $POLICY_LOGS
+
+COPY --chown=policy:policy --from=tarball /extracted/ $POLICY_HOME/
 
 WORKDIR $POLICY_HOME
-COPY policy-api.sh  bin/.
-COPY /maven/api.jar /app
+COPY --chown=policy:policy policy-api.sh bin/
+COPY --chown=policy:policy /maven/api.jar /app/
 
-RUN chown -R policy:policy * && chmod 755 bin/*.sh && chown -R policy:policy /app
+RUN chmod 755 bin/*.sh
 
 USER policy
 WORKDIR $POLICY_HOME/bin
index 712daad..e3c42bf 100644 (file)
 # SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 #-------------------------------------------------------------------------------
+
+FROM busybox AS tarball
+RUN mkdir /packages /extracted
+COPY /maven/lib/policy-api.tar.gz /packages/
+RUN tar xvzf /packages/policy-api.tar.gz --directory /extracted/
+
 FROM opensuse/leap:15.4
 
 LABEL maintainer="Policy Team"
@@ -37,22 +43,20 @@ ENV POLICY_HOME=/opt/app/policy/api
 ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
 ENV JAVA_HOME=/usr/lib64/jvm/java-11-openjdk-11
 
-RUN zypper -n -q install --no-recommends gzip java-11-openjdk-headless netcat-openbsd tar && \
+RUN zypper -n -q install --no-recommends java-11-openjdk-headless netcat-openbsd && \
     zypper -n -q update && zypper -n -q clean --all && \
     groupadd --system policy && \
     useradd --system --shell /bin/sh -G policy policy && \
-    mkdir -p /app $POLICY_LOGS $POLICY_HOME $POLICY_HOME/bin && \
-    chown -R policy:policy /app $POLICY_HOME $POLICY_LOGS && \
-    mkdir /packages
-COPY /maven/lib/policy-api.tar.gz /packages
-RUN tar xvfz /packages/policy-api.tar.gz --directory $POLICY_HOME && \
-    rm /packages/policy-api.tar.gz
+    mkdir -p $POLICY_HOME $POLICY_LOGS && \
+    chown -R policy:policy $POLICY_HOME $POLICY_LOGS
+
+COPY --chown=policy:policy --from=tarball /extracted/ $POLICY_HOME/
 
 WORKDIR $POLICY_HOME
-COPY policy-api.sh  bin/.
-COPY /maven/api.jar /app
+COPY --chown=policy:policy policy-api.sh bin/
+COPY --chown=policy:policy /maven/api.jar /app/
 
-RUN chown -R policy:policy * && chmod 755 bin/*.sh && chown -R policy:policy /app
+RUN chmod 755 bin/*.sh
 
 USER policy
 WORKDIR $POLICY_HOME/bin
index 777ea85..29ed343 100644 (file)
@@ -2,6 +2,7 @@
   ============LICENSE_START=======================================================
    Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
    Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
+   Modifications Copyright (C) 2022 Nordix Foundation.
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
         <format>tar.gz</format>
     </formats>
     <includeBaseDirectory>false</includeBaseDirectory>
-    <dependencySets>
-        <dependencySet>
-            <useProjectArtifact>true</useProjectArtifact>
-            <outputDirectory>${file.separator}lib</outputDirectory>
-            <unpack>false</unpack>
-            <scope>runtime</scope>
-            <includes>
-                <include>*:jar</include>
-            </includes>
-        </dependencySet>
-    </dependencySets>
     <fileSets>
         <fileSet>
             <directory>${project.basedir}/src/main/resources/etc
@@ -60,4 +50,4 @@
             <lineEnding>keep</lineEnding>
         </fileSet>
     </fileSets>
-</assembly>
\ No newline at end of file
+</assembly>