diff options
author | mmis <michael.morris@ericsson.com> | 2018-07-10 10:50:05 +0100 |
---|---|---|
committer | mmis <michael.morris@ericsson.com> | 2018-07-10 16:31:01 +0100 |
commit | ef24b0561786040752bd46ade5859968d57ea031 (patch) | |
tree | e8b9dc58a92a986d285ae44c688e2553f7e1b4b6 | |
parent | da923d791ae2e3ca67dd9711e7c3f173b500abce (diff) |
Create docker image for apex-pdp
Issue-ID: POLICY-866
Change-Id: I6bc322224e087acae1c92a67c48506f061a59d14
Signed-off-by: mmis <michael.morris@ericsson.com>
-rw-r--r-- | docker_build.sh | 103 | ||||
-rw-r--r-- | docker_merge.sh | 91 | ||||
-rw-r--r-- | docker_verify.sh | 75 | ||||
-rw-r--r-- | packages/apex-pdp-docker/README.md | 3 | ||||
-rw-r--r-- | packages/apex-pdp-docker/pom.xml | 112 | ||||
-rw-r--r-- | packages/apex-pdp-docker/src/main/docker/Dockerfile | 41 | ||||
-rwxr-xr-x | packages/apex-pdp-package-full/src/main/package/scripts/apexApps.sh | 2 | ||||
-rwxr-xr-x | packages/apex-pdp-package-full/src/main/package/scripts/apexCLIEditor.sh | 2 | ||||
-rwxr-xr-x | packages/apex-pdp-package-full/src/main/package/scripts/apexEngine.sh | 2 | ||||
-rwxr-xr-x | packages/apex-pdp-package-full/src/main/package/scripts/apexRESTEditor.sh | 2 | ||||
-rw-r--r-- | packages/pom.xml | 3 |
11 files changed, 431 insertions, 5 deletions
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 @@ +<!-- + ============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 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 @@ <modules> <module>apex-pdp-package-full</module> + <module>apex-pdp-docker</module> </modules> -</project>
\ No newline at end of file +</project> |