From ef24b0561786040752bd46ade5859968d57ea031 Mon Sep 17 00:00:00 2001 From: mmis Date: Tue, 10 Jul 2018 10:50:05 +0100 Subject: Create docker image for apex-pdp Issue-ID: POLICY-866 Change-Id: I6bc322224e087acae1c92a67c48506f061a59d14 Signed-off-by: mmis --- docker_build.sh | 103 +++++++++++++++++++ docker_merge.sh | 91 +++++++++++++++++ docker_verify.sh | 75 ++++++++++++++ packages/apex-pdp-docker/README.md | 3 + packages/apex-pdp-docker/pom.xml | 112 +++++++++++++++++++++ .../apex-pdp-docker/src/main/docker/Dockerfile | 41 ++++++++ .../src/main/package/scripts/apexApps.sh | 2 +- .../src/main/package/scripts/apexCLIEditor.sh | 2 +- .../src/main/package/scripts/apexEngine.sh | 2 +- .../src/main/package/scripts/apexRESTEditor.sh | 2 +- packages/pom.xml | 3 +- 11 files changed, 431 insertions(+), 5 deletions(-) create mode 100644 docker_build.sh create mode 100644 docker_merge.sh create mode 100644 docker_verify.sh create mode 100644 packages/apex-pdp-docker/README.md create mode 100644 packages/apex-pdp-docker/pom.xml create mode 100644 packages/apex-pdp-docker/src/main/docker/Dockerfile diff --git a/docker_build.sh b/docker_build.sh new file mode 100644 index 000000000..c2c7abdb0 --- /dev/null +++ b/docker_build.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# +echo '============== STARTING SCRIPT TO BUILD DOCKER IMAGES =================' +DOCKER_REPOSITORY=nexus3.onap.org:10003 +MVN_VERSION=$(cat packages/apex-pdp-docker/target/version) +MVN_MAJMIN_VERSION=$(cut -f 1,2 -d . packages/apex-pdp-docker/target/version) +TIMESTAMP=$(date -u +%Y%m%dT%H%M%S) +PROXY_ARGS="" +IMAGE=policy-apex-pdp + +if [ $HTTP_PROXY ]; then + PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}" +fi +if [ $HTTPS_PROXY ]; then + PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" +fi + +echo $DOCKER_REPOSITORY +echo $MVN_VERSION +echo $MVN_MAJMIN_VERSION +echo $TIMESTAMP + +if [[ -z $MVN_VERSION ]] +then + echo "MVN_VERSION is empty" + exit 1 +fi + +if [[ -z $MVN_MAJMIN_VERSION ]] +then + echo "MVN_MAJMIN_VERSION is empty" + exit 1 +fi + +if [[ $MVN_VERSION == *"SNAPSHOT"* ]] +then + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-SNAPSHOT" +else + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-STAGING" +fi + +echo $MVN_MAJMIN_VERSION + +echo "Building $IMAGE" + +# +# This is the local latest tagged image. The Dockerfile's need this to build images +# +TAGS="--tag onap/${IMAGE}:latest" +# +# This is the nexus repo prepended for latest tagged image. +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:latest" +# +# This has the nexus repo prepended and only major/minor version with latest +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest" +# +# This has the nexus repo prepended and major/minor/patch version with timestamp +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}Z" + +echo $TAGS + +docker build --quiet ${PROXY_ARGS} $TAGS packages/apex-pdp-docker/target/$IMAGE + +if [ $? -ne 0 ] +then + echo "Docker build failed" + docker images + exit 1 +fi + +docker images + +echo "Pushing $IMAGE" + +docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:latest + +if [ $? -ne 0 ] +then + echo "Docker push failed" + exit 1 + +fi + +docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest + +if [ $? -ne 0 ] +then + echo "Docker push failed" + exit 1 + +fi +docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}Z + +if [ $? -ne 0 ] +then + echo "Docker push failed" + exit 1 + +fi + diff --git a/docker_merge.sh b/docker_merge.sh new file mode 100644 index 000000000..bc7aac1de --- /dev/null +++ b/docker_merge.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# +echo '============== STARTING SCRIPT TO BUILD DOCKER IMAGES =================' +DOCKER_REPOSITORY=nexus3.onap.org:10003 +MVN_VERSION=$(cat packages/apex-pdp-docker/target/version) +MVN_MAJMIN_VERSION=$(cut -f 1,2 -d . packages/apex-pdp-docker/target/version) +TIMESTAMP=$(date -u +%Y%m%dT%H%M%S) +PROXY_ARGS="" +IMAGE=policy-apex-pdp + +if [ $HTTP_PROXY ]; then + PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}" +fi +if [ $HTTPS_PROXY ]; then + PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" +fi + +echo $DOCKER_REPOSITORY +echo $MVN_VERSION +echo $MVN_MAJMIN_VERSION +echo $TIMESTAMP + +if [[ -z $MVN_VERSION ]] +then + echo "MVN_VERSION is empty" + exit 1 +fi + +if [[ -z $MVN_MAJMIN_VERSION ]] +then + echo "MVN_MAJMIN_VERSION is empty" + exit 1 +fi + +if [[ $MVN_VERSION == *"SNAPSHOT"* ]] +then + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-SNAPSHOT" +else + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-STAGING" +fi + +echo $MVN_MAJMIN_VERSION + +echo "Building $IMAGE" + +# +# This is the local latest tagged image. The Dockerfile's need this to build images +# +TAGS="--tag onap/${IMAGE}:latest" +# +# This has the nexus repo prepended and only major/minor version with latest +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest" +# +# This has the nexus repo prepended and major/minor/patch version with timestamp +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}Z" + +echo $TAGS + +docker build --quiet ${PROXY_ARGS} $TAGS packages/apex-pdp-docker/target/$IMAGE + +if [ $? -ne 0 ] +then + echo "Docker build failed" + docker images + exit 1 +fi + +docker images + +# +# Push image +# +echo "Pushing $IMAGE" +docker push ${DOCKER_REPOSITORY}/onap/$IMAGE:${MVN_MAJMIN_VERSION}-latest + +if [ $? -ne 0 ] +then + echo "Docker push failed" + exit 1 +fi + +docker push ${DOCKER_REPOSITORY}/onap/$IMAGE:${MVN_VERSION}-${TIMESTAMP}Z + +if [ $? -ne 0 ] +then + echo "Docker push failed" + exit 1 +fi + diff --git a/docker_verify.sh b/docker_verify.sh new file mode 100644 index 000000000..0f77a61e7 --- /dev/null +++ b/docker_verify.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +echo '============== STARTING SCRIPT TO BUILD DOCKER IMAGES =================' +# +# JUST VERIFY ONLY - NO PUSHING +# +DOCKER_REPOSITORY=nexus3.onap.org:10003 +MVN_VERSION=$(cat packages/apex-pdp-docker/target/version) +MVN_MAJMIN_VERSION=$(cut -f 1,2 -d . packages/apex-pdp-docker/target/version) +TIMESTAMP=$(date -u +%Y%m%dT%H%M%S) +PROXY_ARGS="" +IMAGE=policy-apex-pdp + +if [ $HTTP_PROXY ]; then + PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}" +fi +if [ $HTTPS_PROXY ]; then + PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" +fi + +echo $DOCKER_REPOSITORY +echo $MVN_VERSION +echo $MVN_MAJMIN_VERSION +echo $TIMESTAMP + +if [[ -z $MVN_VERSION ]] +then + echo "MVN_VERSION is empty" + exit 1 +fi + +if [[ -z $MVN_MAJMIN_VERSION ]] +then + echo "MVN_MAJMIN_VERSION is empty" + exit 1 +fi + +if [[ $MVN_VERSION == *"SNAPSHOT"* ]] +then + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-SNAPSHOT" +else + MVN_MAJMIN_VERSION="${MVN_MAJMIN_VERSION}-STAGING" +fi + +echo $MVN_MAJMIN_VERSION + +echo "Building $IMAGE" + +# +# This is the local latest tagged image. The Dockerfile's need this to build images +# +TAGS="--tag onap/${IMAGE}:latest" +# +# This has the nexus repo prepended and only major/minor version with latest +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest" +# +# This has the nexus repo prepended and major/minor/patch version with timestamp +# +TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}Z" + +echo $TAGS + +docker build ${PROXY_ARGS} $TAGS packages/apex-pdp-docker/target/$IMAGE + +if [ $? -ne 0 ] +then + echo "Docker build failed" + docker images + exit 1 +fi + +docker images + + diff --git a/packages/apex-pdp-docker/README.md b/packages/apex-pdp-docker/README.md new file mode 100644 index 000000000..9008e00e6 --- /dev/null +++ b/packages/apex-pdp-docker/README.md @@ -0,0 +1,3 @@ +To build the onap/policy-apex-pdp docker image: +1. Build the apex-pdp repository +2. Run: apex-pdp/docker-verify.sh or apex-pdp/docker-build.sh or apex-pdp/docker-merge.sh as required. diff --git a/packages/apex-pdp-docker/pom.xml b/packages/apex-pdp-docker/pom.xml new file mode 100644 index 000000000..314718243 --- /dev/null +++ b/packages/apex-pdp-docker/pom.xml @@ -0,0 +1,112 @@ + + + 4.0.0 + + org.onap.policy.apex-pdp.packages + packages + 2.0.0-SNAPSHOT + + + apex-pdp-docker + pom + Policy APEX PDP - Docker build + ONAP Policy APEX PDP Docker Build + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-apex-tarball + prepare-package + + copy + + + ${project.build.directory}/policy-apex-pdp + false + true + + + org.onap.policy.apex-pdp.packages + apex-pdp-package-full + ${project.version} + tarball + tar.gz + apex-pdp-package-full.tar.gz + + + + + + + + maven-resources-plugin + 3.0.2 + + + copy-resources + prepare-package + + copy-resources + + + ${project.build.directory}/policy-apex-pdp + + + src/main/docker + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + get-target-version + prepare-package + + exec + + + + + echo + ${project.build.directory} + + ${project.version} + + ${project.build.directory}/version + + + + + + + diff --git a/packages/apex-pdp-docker/src/main/docker/Dockerfile b/packages/apex-pdp-docker/src/main/docker/Dockerfile new file mode 100644 index 000000000..c16469a84 --- /dev/null +++ b/packages/apex-pdp-docker/src/main/docker/Dockerfile @@ -0,0 +1,41 @@ +# +# Docker file to build an image that runs APEX on Java 8 in Ubuntu +# +FROM ubuntu:16.04 + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y software-properties-common && \ + add-apt-repository ppa:openjdk-r/ppa -y && \ + apt-get update && \ + apt-get install -y openjdk-8-jdk + +# Create apex user and group +RUN groupadd apexuser +RUN useradd --create-home -g apexuser apexuser + +# Add Apex-specific directories and set ownership as the Apex admin user +RUN mkdir -p /opt/app/policy/apex-pdp +RUN mkdir -p /var/log/onap/policy/apex-pdp +RUN chown -R apexuser:apexuser /var/log/onap/policy/apex-pdp + +# Unpack the tarball +RUN mkdir /packages +COPY apex-pdp-package-full.tar.gz /packages +RUN tar xvfz /packages/apex-pdp-package-full.tar.gz --directory /opt/app/policy/apex-pdp +RUN rm /packages/apex-pdp-package-full.tar.gz + +# Ensure everything has the correct permissions +RUN find /opt/app -type d -perm 755 +RUN find /opt/app -type f -perm 644 +RUN chmod a+x /opt/app/policy/apex-pdp/bin/* + +# Copy examples to Apex user area +RUN cp -pr /opt/app/policy/apex-pdp/examples /home/apexuser + +ENV PATH /opt/app/policy/apex-pdp/bin:$PATH + +RUN apt-get clean + +RUN chown -R apexuser:apexuser /home/apexuser/* +WORKDIR /home/apexuser diff --git a/packages/apex-pdp-package-full/src/main/package/scripts/apexApps.sh b/packages/apex-pdp-package-full/src/main/package/scripts/apexApps.sh index adcbfcbb1..c0397429b 100755 --- a/packages/apex-pdp-package-full/src/main/package/scripts/apexApps.sh +++ b/packages/apex-pdp-package-full/src/main/package/scripts/apexApps.sh @@ -27,7 +27,7 @@ if [ -z $APEX_HOME ] then - APEX_HOME="/opt/onap/policy/apex-pdp" + APEX_HOME="/opt/app/policy/apex-pdp" fi if [ ! -d $APEX_HOME ] diff --git a/packages/apex-pdp-package-full/src/main/package/scripts/apexCLIEditor.sh b/packages/apex-pdp-package-full/src/main/package/scripts/apexCLIEditor.sh index 28a26171b..387a4d9cc 100755 --- a/packages/apex-pdp-package-full/src/main/package/scripts/apexCLIEditor.sh +++ b/packages/apex-pdp-package-full/src/main/package/scripts/apexCLIEditor.sh @@ -36,7 +36,7 @@ if [ -z $APEX_HOME ] then - APEX_HOME="/opt/onap/policy/apex-pdp" + APEX_HOME="/opt/app/policy/apex-pdp" fi if [ ! -d $APEX_HOME ] diff --git a/packages/apex-pdp-package-full/src/main/package/scripts/apexEngine.sh b/packages/apex-pdp-package-full/src/main/package/scripts/apexEngine.sh index c07e38b51..0a251ab90 100755 --- a/packages/apex-pdp-package-full/src/main/package/scripts/apexEngine.sh +++ b/packages/apex-pdp-package-full/src/main/package/scripts/apexEngine.sh @@ -54,7 +54,7 @@ fi if [ -z $APEX_HOME ] then - APEX_HOME="/opt/onap/policy/apex-pdp" + APEX_HOME="/opt/app/policy/apex-pdp" fi if [ ! -d $APEX_HOME ] diff --git a/packages/apex-pdp-package-full/src/main/package/scripts/apexRESTEditor.sh b/packages/apex-pdp-package-full/src/main/package/scripts/apexRESTEditor.sh index 3f2ae867b..cb3641f04 100755 --- a/packages/apex-pdp-package-full/src/main/package/scripts/apexRESTEditor.sh +++ b/packages/apex-pdp-package-full/src/main/package/scripts/apexRESTEditor.sh @@ -37,7 +37,7 @@ if [ -z $APEX_HOME ] then - APEX_HOME="/opt/onap/policy/apex-pdp" + APEX_HOME="/opt/app/policy/apex-pdp" fi if [ ! -d $APEX_HOME ] diff --git a/packages/pom.xml b/packages/pom.xml index 509fc7adc..f77401edd 100644 --- a/packages/pom.xml +++ b/packages/pom.xml @@ -35,5 +35,6 @@ apex-pdp-package-full + apex-pdp-docker - \ No newline at end of file + -- cgit 1.2.3-korg