Create docker image for apex-pdp
Issue-ID: POLICY-866
Change-Id: I6bc322224e087acae1c92a67c48506f061a59d14
Signed-off-by: mmis <michael.morris@ericsson.com>
diff --git a/docker_build.sh b/docker_build.sh
new file mode 100644
index 0000000..c2c7abd
--- /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 0000000..bc7aac1
--- /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 0000000..0f77a61
--- /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 0000000..9008e00
--- /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 0000000..3147182
--- /dev/null
+++ b/packages/apex-pdp-docker/pom.xml
@@ -0,0 +1,112 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.policy.apex-pdp.packages</groupId>
+ <artifactId>packages</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>apex-pdp-docker</artifactId>
+ <packaging>pom</packaging>
+ <name>Policy APEX PDP - Docker build</name>
+ <description>ONAP Policy APEX PDP Docker Build</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-apex-tarball</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/policy-apex-pdp</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.onap.policy.apex-pdp.packages</groupId>
+ <artifactId>apex-pdp-package-full</artifactId>
+ <version>${project.version}</version>
+ <classifier>tarball</classifier>
+ <type>tar.gz</type>
+ <destFileName>apex-pdp-package-full.tar.gz</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>3.0.2</version>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/policy-apex-pdp</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/docker</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.6.0</version>
+ <executions>
+ <execution>
+ <id>get-target-version</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <executable>echo</executable>
+ <workingDirectory>${project.build.directory}</workingDirectory>
+ <arguments>
+ <argument>${project.version}</argument>
+ </arguments>
+ <outputFile>${project.build.directory}/version</outputFile>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+</project>
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 0000000..c16469a
--- /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 adcbfcb..c039742 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 28a2617..387a4d9 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 c07e38b..0a251ab 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 @@
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 3f2ae86..cb3641f 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 509fc7a..f77401e 100644
--- a/packages/pom.xml
+++ b/packages/pom.xml
@@ -35,5 +35,6 @@
<modules>
<module>apex-pdp-package-full</module>
+ <module>apex-pdp-docker</module>
</modules>
-</project>
\ No newline at end of file
+</project>