From cf10ac21a771d790a96d6bc2b7794ecc0f78a23c Mon Sep 17 00:00:00 2001 From: Patrick Brady Date: Tue, 9 Jan 2018 12:56:19 -0800 Subject: Modify docker scripts to even out layers Making it so that appc features are added to the docker image in several waves, so that no single layer of the image ends up being massive. Change-Id: I5cf8f1324b4b2991a146f16d958b06077b5c1612 Signed-off-by: Patrick Brady Issue-ID: APPC-370 --- installation/appc/pom.xml | 1 + installation/appc/src/main/docker/Dockerfile | 10 +++++++ installation/appc/src/main/scripts/installZips.sh | 36 ++++++++++++++++++----- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/installation/appc/pom.xml b/installation/appc/pom.xml index 3cebf5e..3711292 100644 --- a/installation/appc/pom.xml +++ b/installation/appc/pom.xml @@ -401,6 +401,7 @@ ${basedir}/src/main/scripts/installZips.sh ${basedir}/target/docker-stage/opt/onap/appc + ${basedir}/target/docker-stage diff --git a/installation/appc/src/main/docker/Dockerfile b/installation/appc/src/main/docker/Dockerfile index 4d72862..3ec21e2 100644 --- a/installation/appc/src/main/docker/Dockerfile +++ b/installation/appc/src/main/docker/Dockerfile @@ -7,6 +7,16 @@ ENV APPC_CONFIG_DIR /opt/onap/appc/data/properties # Copy the opt folder to the container's /opt folder COPY opt /opt + +# We are keeping the feature installers in their +# own folders in the docker staging repository. +# The number of feature directories is defined in +# the installZips.sh file. +COPY featureDir1 /opt/onap/appc/features +COPY featureDir2 /opt/onap/appc/features +COPY featureDir3 /opt/onap/appc/features +COPY featureDir4 /opt/onap/appc/features + RUN ln -s /opt/onap/appc /opt/appc # Expose port 8181 for ODL REST calls diff --git a/installation/appc/src/main/scripts/installZips.sh b/installation/appc/src/main/scripts/installZips.sh index 8d8213d..dca7ec4 100644 --- a/installation/appc/src/main/scripts/installZips.sh +++ b/installation/appc/src/main/scripts/installZips.sh @@ -34,7 +34,16 @@ SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc} targetDir=${1:-${APPC_HOME}} sdnc_targetDir=${1:-${SDNC_HOME}} -featureDir=${targetDir}/features +#We are going to use a series of directories in the docker-stage folder to extract features to. +#By extracting features into more than one directory, we can copy them into the docker image in +#different parts, creating more even layer sizes in the docker image. +featureDir=$2/featureDir + +#This value determine how many feature directories we want. The featutures will be evenly split +#into the number of directories specified. Any remainder will be put into the last directory. +#IF THE FEATURES_DIRECTORY_COUNT IS CHANGED, THE DOCKERFILE MUST ALSO BE UPDATED SINCE IT CONTAINS +#A COPY COMMAND FOR EACH FEATURE DIRECTORY!! See the Dockerfile for more information. +FEATURE_DIRECTORY_COUNT=4 APPC_FEATURES=" \ appc-sdc-listener \ @@ -64,6 +73,8 @@ APPC_FEATURES=" \ appc-config-params \ appc-aai-client" +FEATURES_PER_DIRECTORY=$(($(echo $APPC_FEATURES|wc -w)/$FEATURE_DIRECTORY_COUNT)) + APPC_VERSION=${APPC_VERSION:-0.0.1} APPC_OAM_VERSION=${APPC_OAM_VERSION:-0.1.1} @@ -72,22 +83,31 @@ then mkdir -p ${targetDir} fi -if [ ! -d ${featureDir} ] -then - mkdir -p ${featureDir} -fi - cwd=$(pwd) -mavenOpts=${2:-"-s ${SETTINGS_FILE} -gs ${GLOBAL_SETTINGS_FILE}"} +mavenOpts="-s ${SETTINGS_FILE} -gs ${GLOBAL_SETTINGS_FILE}" cd /tmp echo "Installing APP-C version ${APPC_VERSION}" + +#The math for splitting up the features into folders +featureNumber=1 +featureDirNumber=1 for feature in ${APPC_FEATURES} do +if (( $featureDirNumber < $FEATURE_DIRECTORY_COUNT )) +then + if (( $featureNumber > $FEATURES_PER_DIRECTORY )) + then + featureDirNumber=$(($featureDirNumber+1)) + featureNumber=1 + fi +fi + rm -f /tmp/${feature}-installer*.zip mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.appc:${feature}-installer:${APPC_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true - unzip -d ${featureDir} /tmp/${feature}-installer*zip + unzip -d ${featureDir}$featureDirNumber /tmp/${feature}-installer*zip +featureNumber=$(($featureNumber+1)) done echo "Installing platform-logic for APP-C" -- cgit 1.2.3-korg