From 08937eeda9c063efb9f3c2adb4c3483d4ffb8fed Mon Sep 17 00:00:00 2001 From: Andrew Hsia Date: Tue, 5 Oct 2021 03:16:35 -0400 Subject: [PATCH] Reduce docker images size with reduced set of java modules Signed-off-by: Andrew Hsia Change-Id: Ia2cd67e9539c5c491398ff741f36990996571703 --- odl-docker/Dockerfile | 40 ++++++++++++++++++++++++++---------- odl-docker/README.md | 14 +++++++++++++ odl-docker/install_docker.sh | 21 ------------------- 3 files changed, 43 insertions(+), 32 deletions(-) create mode 100644 odl-docker/README.md delete mode 100755 odl-docker/install_docker.sh diff --git a/odl-docker/Dockerfile b/odl-docker/Dockerfile index 744890e..aaab8d3 100644 --- a/odl-docker/Dockerfile +++ b/odl-docker/Dockerfile @@ -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 index 0000000..323b848 --- /dev/null +++ b/odl-docker/README.md @@ -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 index 75ab619..0000000 --- a/odl-docker/install_docker.sh +++ /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 -- 2.36.6