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>