From 0fe2333d835dfd768f62fc08923e23410c786a65 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 13 Jan 2020 16:36:38 -0500 Subject: Update docker images for java 11 Added debian-slim images based off of jre-slim. Removed alpine images from the build. If it's determined that we need a jdk instead of a jre, then "jre" can be changed to "jdk" in the policy-base Dockerfile. As an alternative, a new policy-docker-jdk image could be created, based off of "jdk" and all of the apt packages added to it. In that case, it would probably be appropriate to removed maven from the packages that are loaded into the policy-common image. Addressed first round of review comments: - use specific version of java 11 - removed docker-maven-plugin version - replaced the images with policy-jre-debian and policy-jdk-debian - added a policy-jdk-alpine image, which includes the jdk & maven, but is significantly smaller than the debian-slim version - added a policy-jre-alpine image Addressed additional review comments: - removed BUILD_VERSION - installed maven packages instead of downloading via curl - added link to /usr/lib/jvm Issue-ID: POLICY-1586 Signed-off-by: Jim Hahn Change-Id: I43fd6a5c5ff9c4a0b537d3f297fdf2ad8248ba75 --- docker_push_manifest.sh | 3 +- policy-base/alpine/README.md | 3 - policy-base/alpine/pom.xml | 150 --------------------- policy-base/alpine/src/main/docker/Dockerfile | 40 ------ policy-base/pom.xml | 52 -------- policy-common/alpine/README.md | 2 - policy-common/alpine/pom.xml | 154 ---------------------- policy-common/alpine/src/main/docker/Dockerfile | 48 ------- policy-common/pom.xml | 53 -------- policy-jdk/alpine/README.md | 3 + policy-jdk/alpine/pom.xml | 154 ++++++++++++++++++++++ policy-jdk/alpine/src/main/docker/Dockerfile | 54 ++++++++ policy-jdk/debian-slim/README.md | 3 + policy-jdk/debian-slim/pom.xml | 154 ++++++++++++++++++++++ policy-jdk/debian-slim/src/main/docker/Dockerfile | 48 +++++++ policy-jdk/pom.xml | 55 ++++++++ policy-jre/alpine/README.md | 3 + policy-jre/alpine/pom.xml | 154 ++++++++++++++++++++++ policy-jre/alpine/src/main/docker/Dockerfile | 53 ++++++++ policy-jre/debian-slim/README.md | 4 + policy-jre/debian-slim/pom.xml | 150 +++++++++++++++++++++ policy-jre/debian-slim/src/main/docker/Dockerfile | 44 +++++++ policy-jre/pom.xml | 54 ++++++++ pom.xml | 5 +- 24 files changed, 938 insertions(+), 505 deletions(-) delete mode 100644 policy-base/alpine/README.md delete mode 100644 policy-base/alpine/pom.xml delete mode 100644 policy-base/alpine/src/main/docker/Dockerfile delete mode 100644 policy-base/pom.xml delete mode 100644 policy-common/alpine/README.md delete mode 100644 policy-common/alpine/pom.xml delete mode 100644 policy-common/alpine/src/main/docker/Dockerfile delete mode 100644 policy-common/pom.xml create mode 100644 policy-jdk/alpine/README.md create mode 100644 policy-jdk/alpine/pom.xml create mode 100644 policy-jdk/alpine/src/main/docker/Dockerfile create mode 100644 policy-jdk/debian-slim/README.md create mode 100644 policy-jdk/debian-slim/pom.xml create mode 100644 policy-jdk/debian-slim/src/main/docker/Dockerfile create mode 100644 policy-jdk/pom.xml create mode 100644 policy-jre/alpine/README.md create mode 100644 policy-jre/alpine/pom.xml create mode 100644 policy-jre/alpine/src/main/docker/Dockerfile create mode 100644 policy-jre/debian-slim/README.md create mode 100644 policy-jre/debian-slim/pom.xml create mode 100644 policy-jre/debian-slim/src/main/docker/Dockerfile create mode 100644 policy-jre/pom.xml diff --git a/docker_push_manifest.sh b/docker_push_manifest.sh index 48ad65e2..210529fa 100755 --- a/docker_push_manifest.sh +++ b/docker_push_manifest.sh @@ -1,6 +1,7 @@ #!/bin/bash -ex # ============LICENSE_START======================================================= # Copyright (C) 2019 ENEA AB. All rights reserved. +# Modifications Copyright (C) 2020 AT&T Intellectual Property. 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. @@ -21,7 +22,7 @@ # shellcheck source=/dev/null source version.properties -IMAGES="onap/policy-base-alpine onap/policy-common-alpine" +IMAGES="onap/policy-jre-alpine onap/policy-jre-debian onap/policy-jdk-alpine onap/policy-jdk-debian" ARCHES="amd64 arm64" TIMESTAMP=$(date -u +"%Y%m%d%H%M%S") MT_RELEASE='v0.9.0' diff --git a/policy-base/alpine/README.md b/policy-base/alpine/README.md deleted file mode 100644 index 71204051..00000000 --- a/policy-base/alpine/README.md +++ /dev/null @@ -1,3 +0,0 @@ -The base image for Policy project images. -Contains basic set of packages used in every Policy app container. - diff --git a/policy-base/alpine/pom.xml b/policy-base/alpine/pom.xml deleted file mode 100644 index d58a7772..00000000 --- a/policy-base/alpine/pom.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - 4.0.0 - - - org.onap.policy.docker - policy-base - 2.0.0-SNAPSHOT - - - pom - policy-base-alpine - Policy alpine base docker image - Policy alpine base docker image - - - ${project.artifactId}-${project.version} - - - org.codehaus.groovy.maven - gmaven-plugin - 1.0 - - - pre-clean - - execute - - - - println 'Project version: ' + project.properties['dist.project.version']; - def versionArray; - if ( project.properties['dist.project.version'] != null ) { - versionArray = project.properties['dist.project.version'].split('-'); - } - - if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { - project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; - } else { - project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; - } - - println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; - if ( "aarch64".equals(System.properties['os.arch']) ) { - project.properties['project.docker.arch'] = "arm64"; - } else { - project.properties['project.docker.arch'] = System.properties['os.arch']; - } - println 'Using arch for docker: ' + project.properties['project.docker.arch']; - - - - - - - io.fabric8 - docker-maven-plugin - 0.28.0 - - true - 1.23 - ${docker.pull.registry} - ${docker.push.registry} - - - - onap/policy-base-alpine:latest-${project.docker.arch} - - try - Dockerfile - - ${project.version}-${project.docker.arch} - ${project.docker.latesttag.version}-${project.docker.arch} - - - - - - - - - clean-images - pre-clean - - remove - - - true - - - - - generate-images - generate-sources - - build - - - - - push-images - deploy - - build - push - - - onap/policy-base-alpine - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - org.apache.maven.plugins - maven-install-plugin - - true - - - - - diff --git a/policy-base/alpine/src/main/docker/Dockerfile b/policy-base/alpine/src/main/docker/Dockerfile deleted file mode 100644 index e131ae67..00000000 --- a/policy-base/alpine/src/main/docker/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2019 Tieto. 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========================================================= - -# Docker file to build a base image for all policy components images -# -# $JAVA_HOME is set to /usr/lib/jvm/java-1.8-openjdk -# more details at https://hub.docker.com/_/openjdk - -FROM openjdk:8-alpine - -LABEL maintainer="Policy Team" - -# used in 7 out of 7 images -RUN apk add --no-cache \ - bash \ - coreutils \ - curl \ - findutils \ - grep \ - nss \ - openssh \ - procps \ - unzip \ - wget \ - zip diff --git a/policy-base/pom.xml b/policy-base/pom.xml deleted file mode 100644 index ac4eaca3..00000000 --- a/policy-base/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - 4.0.0 - - org.onap.policy.docker - docker - 2.0.0-SNAPSHOT - - - policy-base - pom - Policy Base Docker images - - - UTF-8 - UTF-8 - ${project.version} - false - false - false - docker.io - docker.io - - - - - docker - - alpine - - - - diff --git a/policy-common/alpine/README.md b/policy-common/alpine/README.md deleted file mode 100644 index 1ac70df5..00000000 --- a/policy-common/alpine/README.md +++ /dev/null @@ -1,2 +0,0 @@ -The common image for Policy project images. -Contains common set of packages used in most Policy apps containers. diff --git a/policy-common/alpine/pom.xml b/policy-common/alpine/pom.xml deleted file mode 100644 index b36221c4..00000000 --- a/policy-common/alpine/pom.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - 4.0.0 - - - org.onap.policy.docker - policy-common - 2.0.0-SNAPSHOT - - - pom - policy-common-alpine - Policy alpine common docker image - Policy alpine common docker image - - - ${project.artifactId}-${project.version} - - - org.codehaus.groovy.maven - gmaven-plugin - 1.0 - - - pre-clean - - execute - - - - println 'Project version: ' + project.properties['dist.project.version']; - def versionArray; - if ( project.properties['dist.project.version'] != null ) { - versionArray = project.properties['dist.project.version'].split('-'); - } - - if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { - project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; - } else { - project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; - } - - println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; - if ( "aarch64".equals(System.properties['os.arch']) ) { - project.properties['project.docker.arch'] = "arm64"; - } else { - project.properties['project.docker.arch'] = System.properties['os.arch']; - } - println 'Using arch for docker: ' + project.properties['project.docker.arch']; - - - - - - - io.fabric8 - docker-maven-plugin - 0.28.0 - - - true - 1.23 - ${docker.pull.registry} - ${docker.push.registry} - - - onap/policy-common-alpine:latest-${project.docker.arch} - - try - Dockerfile - - ${project.version}-${project.docker.arch} - ${project.docker.latesttag.version}-${project.docker.arch} - - - ${docker.build.version} - - - - - - - - - clean-images - pre-clean - - remove - - - true - - - - - generate-images - generate-sources - - build - - - - - push-images - deploy - - build - push - - - onap/policy-common-alpine - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - org.apache.maven.plugins - maven-install-plugin - - true - - - - - - diff --git a/policy-common/alpine/src/main/docker/Dockerfile b/policy-common/alpine/src/main/docker/Dockerfile deleted file mode 100644 index ba8d2d17..00000000 --- a/policy-common/alpine/src/main/docker/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2019 Tieto. 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========================================================= - -# -# Docker file to build an image that contains common packages for Policy components -# -FROM onap/policy-base-alpine:latest-${project.docker.arch} - -LABEL maintainer="Policy Team" - -ARG BUILD_VERSION=${BUILD_VERSION} - -ENV BUILD_VERSION ${BUILD_VERSION} -ENV POLICY_HOME=/opt/app/policy - -# Install common packages used in 6 out of 7 images -RUN apk add --no-cache \ - busybox-extras \ - httpie \ - jq \ - maven \ - py-pip \ - python - -# Create policy user and group -RUN addgroup -S policy && \ - adduser -S --shell /bin/bash -G policy policy - -# Create common directories and change owner -RUN mkdir -p \ - ${POLICY_HOME}/etc/ssl \ - && chown -R policy:policy ${POLICY_HOME} ${POLICY_HOME}/etc/ssl - diff --git a/policy-common/pom.xml b/policy-common/pom.xml deleted file mode 100644 index d63bf4e5..00000000 --- a/policy-common/pom.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - 4.0.0 - - org.onap.policy.docker - docker - 2.0.0-SNAPSHOT - - - policy-common - pom - Policy Common Docker images - - - UTF-8 - UTF-8 - ${project.version} - false - false - false - docker.io - docker.io - ${project.version} - - - - - docker - - alpine - - - - diff --git a/policy-jdk/alpine/README.md b/policy-jdk/alpine/README.md new file mode 100644 index 00000000..0798eab7 --- /dev/null +++ b/policy-jdk/alpine/README.md @@ -0,0 +1,3 @@ +The common image for Policy project images. +Contains common set of packages used in most Policy apps containers +needing maven and a full JDK. diff --git a/policy-jdk/alpine/pom.xml b/policy-jdk/alpine/pom.xml new file mode 100644 index 00000000..b5df9e81 --- /dev/null +++ b/policy-jdk/alpine/pom.xml @@ -0,0 +1,154 @@ + + + + + 4.0.0 + + + org.onap.policy.docker + policy-jdk + 2.0.0-SNAPSHOT + + + pom + policy-jdk-alpine + Policy alpine jdk docker image + Policy alpine jdk docker image + + + ${project.artifactId}-${project.version} + + + org.codehaus.groovy.maven + gmaven-plugin + 1.0 + + + pre-clean + + execute + + + + println 'Project version: ' + project.properties['dist.project.version']; + def versionArray; + if ( project.properties['dist.project.version'] != null ) { + versionArray = project.properties['dist.project.version'].split('-'); + } + + if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; + } + + println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; + if ( "aarch64".equals(System.properties['os.arch']) ) { + project.properties['project.docker.arch'] = "arm64"; + } else { + project.properties['project.docker.arch'] = System.properties['os.arch']; + } + println 'Using arch for docker: ' + project.properties['project.docker.arch']; + + + + + + + io.fabric8 + docker-maven-plugin + + + true + 1.23 + ${docker.pull.registry} + ${docker.push.registry} + + + onap/policy-jdk-alpine:latest-${project.docker.arch} + + try + Dockerfile + + ${project.version}-${project.docker.arch} + ${project.docker.latesttag.version}-${project.docker.arch} + + + ${docker.build.version} + + + + + + + + + clean-images + pre-clean + + remove + + + true + + + + + generate-images + generate-sources + + build + + + + + push-images + deploy + + build + push + + + onap/policy-jdk-alpine + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-install-plugin + + true + + + + + + diff --git a/policy-jdk/alpine/src/main/docker/Dockerfile b/policy-jdk/alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..a258a314 --- /dev/null +++ b/policy-jdk/alpine/src/main/docker/Dockerfile @@ -0,0 +1,54 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Tieto. All rights reserved. +# Modifications Copyright (C) 2020 AT&T Intellectual Property. 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========================================================= + +# Docker file to build a base image for all policy components images +# +# $JAVA_HOME is set to /usr/lib/jvm/java-11-openjdk +# more details at https://hub.docker.com/_/openjdk + +FROM alpine:latest + +LABEL maintainer="Policy Team" + +ENV POLICY_HOME=/opt/app/policy + +RUN apk update \ + && apk add --no-cache \ + bash \ + busybox-extras \ + coreutils \ + curl \ + findutils \ + grep \ + httpie \ + jq \ + maven \ + nss \ + openjdk11 \ + openssh \ + procps \ + py-pip \ + python \ + unzip \ + wget \ + zip \ + && addgroup -S policy \ + && adduser -S --shell /bin/bash -G policy policy \ + && mkdir -p ${POLICY_HOME}/etc/ssl \ + && chown -R policy:policy ${POLICY_HOME} diff --git a/policy-jdk/debian-slim/README.md b/policy-jdk/debian-slim/README.md new file mode 100644 index 00000000..0798eab7 --- /dev/null +++ b/policy-jdk/debian-slim/README.md @@ -0,0 +1,3 @@ +The common image for Policy project images. +Contains common set of packages used in most Policy apps containers +needing maven and a full JDK. diff --git a/policy-jdk/debian-slim/pom.xml b/policy-jdk/debian-slim/pom.xml new file mode 100644 index 00000000..2b231498 --- /dev/null +++ b/policy-jdk/debian-slim/pom.xml @@ -0,0 +1,154 @@ + + + + + 4.0.0 + + + org.onap.policy.docker + policy-jdk + 2.0.0-SNAPSHOT + + + pom + policy-jdk-debian + Policy debian-slim jdk docker image + Policy debian-slim jdk docker image + + + ${project.artifactId}-${project.version} + + + org.codehaus.groovy.maven + gmaven-plugin + 1.0 + + + pre-clean + + execute + + + + println 'Project version: ' + project.properties['dist.project.version']; + def versionArray; + if ( project.properties['dist.project.version'] != null ) { + versionArray = project.properties['dist.project.version'].split('-'); + } + + if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; + } + + println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; + if ( "aarch64".equals(System.properties['os.arch']) ) { + project.properties['project.docker.arch'] = "arm64"; + } else { + project.properties['project.docker.arch'] = System.properties['os.arch']; + } + println 'Using arch for docker: ' + project.properties['project.docker.arch']; + + + + + + + io.fabric8 + docker-maven-plugin + + + true + 1.23 + ${docker.pull.registry} + ${docker.push.registry} + + + onap/policy-jdk-debian:latest-${project.docker.arch} + + try + Dockerfile + + ${project.version}-${project.docker.arch} + ${project.docker.latesttag.version}-${project.docker.arch} + + + ${docker.build.version} + + + + + + + + + clean-images + pre-clean + + remove + + + true + + + + + generate-images + generate-sources + + build + + + + + push-images + deploy + + build + push + + + onap/policy-jdk-debian + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-install-plugin + + true + + + + + + diff --git a/policy-jdk/debian-slim/src/main/docker/Dockerfile b/policy-jdk/debian-slim/src/main/docker/Dockerfile new file mode 100644 index 00000000..55b47d1b --- /dev/null +++ b/policy-jdk/debian-slim/src/main/docker/Dockerfile @@ -0,0 +1,48 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2020 AT&T Intellectual Property. 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========================================================= + +# Docker file to build a base image for all policy components images +# + +FROM maven:3.6-jdk-11 + +LABEL maintainer="Policy Team" + +ARG MAVEN_VERSION=3.6.3 +ARG SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 +ARG BASE_URL="https://www.apache.org/dyn/mirrors/mirrors.cgi?cca2=us&preferred=http://apache.claz.org/&action=download&filename=maven/maven-3/${MAVEN_VERSION}/binaries" + +ENV POLICY_HOME=/opt/app/policy + +RUN apt-get -y update \ + && apt-get -y install \ + curl \ + httpie \ + jq \ + less \ + python \ + python-pip \ + ssh \ + unzip \ + wget \ + zip \ + && mkdir /usr/lib/jvm \ + && ln -s /usr/local/openjdk-11 /usr/lib/jvm/java-11-openjdk \ + && adduser --shell /bin/bash --disabled-password policy \ + && mkdir -p ${POLICY_HOME}/etc/ssl \ + && chown -R policy:policy ${POLICY_HOME} diff --git a/policy-jdk/pom.xml b/policy-jdk/pom.xml new file mode 100644 index 00000000..f0959453 --- /dev/null +++ b/policy-jdk/pom.xml @@ -0,0 +1,55 @@ + + + + 4.0.0 + + org.onap.policy.docker + docker + 2.0.0-SNAPSHOT + + + policy-jdk + pom + Policy Common Docker images + + + UTF-8 + UTF-8 + ${project.version} + false + false + false + docker.io + docker.io + ${project.version} + + + + + docker + + alpine + debian-slim + + + + diff --git a/policy-jre/alpine/README.md b/policy-jre/alpine/README.md new file mode 100644 index 00000000..1701b2a4 --- /dev/null +++ b/policy-jre/alpine/README.md @@ -0,0 +1,3 @@ +The common image for Policy project images. +Contains common set of packages used in most Policy apps containers +needing a JRE, but not a full JDK. diff --git a/policy-jre/alpine/pom.xml b/policy-jre/alpine/pom.xml new file mode 100644 index 00000000..302364cd --- /dev/null +++ b/policy-jre/alpine/pom.xml @@ -0,0 +1,154 @@ + + + + + 4.0.0 + + + org.onap.policy.docker + policy-jre + 2.0.0-SNAPSHOT + + + pom + policy-jre-alpine + Policy alpine jre docker image + Policy alpine jre docker image + + + ${project.artifactId}-${project.version} + + + org.codehaus.groovy.maven + gmaven-plugin + 1.0 + + + pre-clean + + execute + + + + println 'Project version: ' + project.properties['dist.project.version']; + def versionArray; + if ( project.properties['dist.project.version'] != null ) { + versionArray = project.properties['dist.project.version'].split('-'); + } + + if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; + } + + println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; + if ( "aarch64".equals(System.properties['os.arch']) ) { + project.properties['project.docker.arch'] = "arm64"; + } else { + project.properties['project.docker.arch'] = System.properties['os.arch']; + } + println 'Using arch for docker: ' + project.properties['project.docker.arch']; + + + + + + + io.fabric8 + docker-maven-plugin + + + true + 1.23 + ${docker.pull.registry} + ${docker.push.registry} + + + onap/policy-jre-alpine:latest-${project.docker.arch} + + try + Dockerfile + + ${project.version}-${project.docker.arch} + ${project.docker.latesttag.version}-${project.docker.arch} + + + ${docker.build.version} + + + + + + + + + clean-images + pre-clean + + remove + + + true + + + + + generate-images + generate-sources + + build + + + + + push-images + deploy + + build + push + + + onap/policy-jre-alpine + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-install-plugin + + true + + + + + + diff --git a/policy-jre/alpine/src/main/docker/Dockerfile b/policy-jre/alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..72704140 --- /dev/null +++ b/policy-jre/alpine/src/main/docker/Dockerfile @@ -0,0 +1,53 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Tieto. All rights reserved. +# Modifications Copyright (C) 2020 AT&T Intellectual Property. 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========================================================= + +# Docker file to build a base image for all policy components images +# +# $JAVA_HOME is set to /usr/lib/jvm/java-11-openjdk +# more details at https://hub.docker.com/_/openjdk + +FROM alpine:latest + +LABEL maintainer="Policy Team" + +ENV POLICY_HOME=/opt/app/policy + +RUN apk update \ + && apk add --no-cache \ + bash \ + busybox-extras \ + coreutils \ + curl \ + findutils \ + grep \ + httpie \ + jq \ + nss \ + openjdk11-jre \ + openssh \ + procps \ + py-pip \ + python \ + unzip \ + wget \ + zip \ + && addgroup -S policy \ + && adduser -S --shell /bin/bash -G policy policy \ + && mkdir -p ${POLICY_HOME}/etc/ssl \ + && chown -R policy:policy ${POLICY_HOME} diff --git a/policy-jre/debian-slim/README.md b/policy-jre/debian-slim/README.md new file mode 100644 index 00000000..40c870eb --- /dev/null +++ b/policy-jre/debian-slim/README.md @@ -0,0 +1,4 @@ +The common image for Policy project images. +Contains basic set of packages used in every Policy app container +needing a JRE, but not a full JDK. + diff --git a/policy-jre/debian-slim/pom.xml b/policy-jre/debian-slim/pom.xml new file mode 100644 index 00000000..b49710c0 --- /dev/null +++ b/policy-jre/debian-slim/pom.xml @@ -0,0 +1,150 @@ + + + + + 4.0.0 + + + org.onap.policy.docker + policy-jre + 2.0.0-SNAPSHOT + + + pom + policy-jre-debian + Policy debian-slim jre docker image + Policy debian-slim jre docker image + + + ${project.artifactId}-${project.version} + + + org.codehaus.groovy.maven + gmaven-plugin + 1.0 + + + pre-clean + + execute + + + + println 'Project version: ' + project.properties['dist.project.version']; + def versionArray; + if ( project.properties['dist.project.version'] != null ) { + versionArray = project.properties['dist.project.version'].split('-'); + } + + if ( project.properties['dist.project.version'].endsWith("-SNAPSHOT") ) { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest"; + } + + println 'New tag for docker: ' + project.properties['project.docker.latesttag.version']; + if ( "aarch64".equals(System.properties['os.arch']) ) { + project.properties['project.docker.arch'] = "arm64"; + } else { + project.properties['project.docker.arch'] = System.properties['os.arch']; + } + println 'Using arch for docker: ' + project.properties['project.docker.arch']; + + + + + + + io.fabric8 + docker-maven-plugin + + true + 1.23 + ${docker.pull.registry} + ${docker.push.registry} + + + + onap/policy-jre-debian:latest-${project.docker.arch} + + try + Dockerfile + + ${project.version}-${project.docker.arch} + ${project.docker.latesttag.version}-${project.docker.arch} + + + + + + + + + clean-images + pre-clean + + remove + + + true + + + + + generate-images + generate-sources + + build + + + + + push-images + deploy + + build + push + + + onap/policy-jre-debian + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-install-plugin + + true + + + + + diff --git a/policy-jre/debian-slim/src/main/docker/Dockerfile b/policy-jre/debian-slim/src/main/docker/Dockerfile new file mode 100644 index 00000000..0d2a6d91 --- /dev/null +++ b/policy-jre/debian-slim/src/main/docker/Dockerfile @@ -0,0 +1,44 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2020 AT&T Intellectual Property. 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========================================================= + +# Docker file to build a base image for all policy components images +# + +FROM openjdk:11.0.5-jre-slim + +LABEL maintainer="Policy Team" + +ENV POLICY_HOME=/opt/app/policy + +RUN apt-get -y update \ + && apt-get -y install \ + curl \ + httpie \ + jq \ + less \ + python \ + python-pip \ + ssh \ + unzip \ + wget \ + zip \ + && mkdir /usr/lib/jvm \ + && ln -s /usr/local/openjdk-11 /usr/lib/jvm/java-11-openjdk \ + && adduser --shell /bin/bash --disabled-password policy \ + && mkdir -p ${POLICY_HOME}/etc/ssl \ + && chown -R policy:policy ${POLICY_HOME} diff --git a/policy-jre/pom.xml b/policy-jre/pom.xml new file mode 100644 index 00000000..7e494937 --- /dev/null +++ b/policy-jre/pom.xml @@ -0,0 +1,54 @@ + + + + 4.0.0 + + org.onap.policy.docker + docker + 2.0.0-SNAPSHOT + + + policy-jre + pom + Policy Base Docker images + + + UTF-8 + UTF-8 + ${project.version} + false + false + false + docker.io + docker.io + + + + + docker + + alpine + debian-slim + + + + diff --git a/pom.xml b/pom.xml index 60a7b343..90d37053 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,7 @@