Reduce docker images size with reduced set of java modules 40/97740/2
authorAndrew Hsia <andrew.hsia@verizonwireless.com>
Tue, 5 Oct 2021 07:16:35 +0000 (03:16 -0400)
committerAndrew Hsia <andrew.hsia@verizonwireless.com>
Thu, 23 Dec 2021 15:05:01 +0000 (15:05 +0000)
Signed-off-by: Andrew Hsia <andrew.hsia@verizonwireless.com>
Change-Id: Ia2cd67e9539c5c491398ff741f36990996571703

odl-docker/Dockerfile
odl-docker/README.md [new file with mode: 0644]
odl-docker/install_docker.sh [deleted file]

index 744890ebba3f7a1758fad83f5791d1ecde5deff8..aaab8d3b6b90bfbd88c7800aa56e843e6f140b1c 100644 (file)
@@ -8,26 +8,44 @@
 # http://www.eclipse.org/legal/epl-v10.html
 ##############################################################################
 
-FROM openjdk:11 AS stage0
+FROM openjdk:11-jdk-slim AS stage0
 
-WORKDIR /opt/opendaylight
+USER root
+
+ARG ODL_VERSION
 
-ADD opendaylight .
+RUN set -eux \
+    && cd $HOME \
+    && apt-get update \
+    && apt-get install -y curl \
+    && rm -rf /var/lib/apt/lists/* \
+    && mkdir -p /opt/opendaylight \
+    && jlink --add-modules java.base,java.compiler,java.desktop,java.logging,java.management,java.naming,java.rmi,java.security.sasl,java.sql,java.xml,jdk.jfr,jdk.naming.rmi,jdk.xml.dom,jdk.unsupported --output /opt/openjdk-11 \
+    && rm -rf /usr/local/openjdk-11 
 
-RUN groupadd -r karaf --gid=8181 && \
-    useradd -rm -g karaf --uid=8181 karaf && \
-    chown -R karaf:karaf .
+COPY start_docker.sh /opt/opendaylight
 
-FROM scratch
+FROM scratch as stage1
 
-ENV JAVA_HOME /usr/local/openjdk-11
+ENV JAVA_HOME /opt/openjdk-11
 ENV PATH $PATH:$JAVA_HOME/bin
-ENV FEATURES odl-restconf
+ENV FEATURES odl-restconf-all
+
+WORKDIR /opt/opendaylight
+
+ARG ODL_VERSION
 
 COPY --from=stage0 / /
 
-WORKDIR /opt/opendaylight
+RUN set -eux \
+    && curl https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/opendaylight/${ODL_VERSION}/opendaylight-${ODL_VERSION}.tar.gz | tar zxf - -C /opt/opendaylight/ --strip-components 1 \
+    && groupadd -r karaf --gid=8181 \
+    && useradd -rm -g karaf --uid=8181 karaf \
+    && chown -R karaf:karaf /opt/opendaylight 
 
 USER karaf
-EXPOSE 8101 8181
+
+EXPOSE 8101 
+EXPOSE 8181
+
 CMD ./start_docker.sh
diff --git a/odl-docker/README.md b/odl-docker/README.md
new file mode 100644 (file)
index 0000000..323b848
--- /dev/null
@@ -0,0 +1,14 @@
+# OpenDaylight Docker Build
+
+
+
+Launch docker build task for ODL version 14.2.0
+
+```
+$ docker build . -f Dockerfile -t opendaylight:14.2.0 --build-arg ODL_VERSION="14.2.0"
+```
+
+Run container
+```
+$ docker run -d -p 8181:8181 opendaylight:14.2.0
+```
\ No newline at end of file
diff --git a/odl-docker/install_docker.sh b/odl-docker/install_docker.sh
deleted file mode 100755 (executable)
index 75ab619..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: EPL-1.0
-##############################################################################
-# Copyright (c) 2021 The Linux Foundation and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-##############################################################################
-
-set -x
-
-VERSION="14.1.0"
-BASEDIR=$(dirname "$0")
-
-wget --progress=dot:mega -P /tmp https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/opendaylight/${VERSION}/opendaylight-${VERSION}.tar.gz
-tar xzf /tmp/opendaylight-${VERSION}.tar.gz --directory ${BASEDIR}
-rm /tmp/opendaylight-${VERSION}.tar.gz
-mv ${BASEDIR}/opendaylight-${VERSION} ${BASEDIR}/opendaylight
-cp ${BASEDIR}/start_docker.sh ${BASEDIR}/opendaylight