diff options
author | Dmitry Puzikov <dmitry.puzikov@tieto.com> | 2019-03-27 13:55:13 +0100 |
---|---|---|
committer | Dmitry Puzikov <dmitry.puzikov@tieto.com> | 2019-03-27 13:55:13 +0100 |
commit | 7830af09b0f682f61d9109b2a296b09450f5ae17 (patch) | |
tree | 041b4603177dca72c15bcb419388e085511764f5 | |
parent | 0fa4eee2cd6a5bef795ea04273ca95c4fe69ed32 (diff) |
Base and common images for Policy apps
Alpine based base and common images to use
across Policy project
Change-Id: I01d504b48ee361d1751dfa982e1515705b9e343e
Issue-ID: INT-996
Signed-off-by: Dmitry Puzikov <dmitry.puzikov@tieto.com>
-rw-r--r-- | policy-base/alpine/README.md | 3 | ||||
-rw-r--r-- | policy-base/alpine/pom.xml | 145 | ||||
-rw-r--r-- | policy-base/alpine/src/main/docker/Dockerfile | 23 | ||||
-rw-r--r-- | policy-base/pom.xml | 53 | ||||
-rw-r--r-- | policy-common/alpine/README.md | 2 | ||||
-rw-r--r-- | policy-common/alpine/pom.xml | 147 | ||||
-rw-r--r-- | policy-common/alpine/src/main/docker/Dockerfile | 34 | ||||
-rw-r--r-- | policy-common/pom.xml | 53 | ||||
-rw-r--r-- | pom.xml | 49 |
9 files changed, 509 insertions, 0 deletions
diff --git a/policy-base/alpine/README.md b/policy-base/alpine/README.md new file mode 100644 index 00000000..71204051 --- /dev/null +++ b/policy-base/alpine/README.md @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000..cc811af8 --- /dev/null +++ b/policy-base/alpine/pom.xml @@ -0,0 +1,145 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson, 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========================================================= +--> + +<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.docker</groupId> + <artifactId>policy-base</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <packaging>pom</packaging> + <artifactId>policy-base-alpine</artifactId> + <name>Policy alpine base docker image</name> + <description>Policy alpine base docker image</description> + + <build> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + 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']; + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.28.0</version> + <configuration> + <verbose>true</verbose> + <apiVersion>1.23</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <pushRegistry>${docker.push.registry}</pushRegistry> + + <images> + <image> + <name>onap/policy-base-alpine</name> + <build> + <cleanup>try</cleanup> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${project.version}</tag> + <tag>${project.version}-${maven.build.timestamp}</tag> + <tag>${project.docker.latesttag.version}</tag> + </tags> + </build> + </image> + </images> + </configuration> + + <executions> + <execution> + <id>clean-images</id> + <phase>pre-clean</phase> + <goals> + <goal>remove</goal> + </goals> + <configuration> + <removeAll>true</removeAll> + </configuration> + </execution> + + <execution> + <id>generate-images</id> + <phase>generate-sources</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>build</goal> + <goal>push</goal> + </goals> + <configuration> + <image>onap/policy-base-alpine</image> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/policy-base/alpine/src/main/docker/Dockerfile b/policy-base/alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..26f20f52 --- /dev/null +++ b/policy-base/alpine/src/main/docker/Dockerfile @@ -0,0 +1,23 @@ +# +# Docker file to build a base image for all policy apps 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 new file mode 100644 index 00000000..4ec12073 --- /dev/null +++ b/policy-base/pom.xml @@ -0,0 +1,53 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson, 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========================================================= +--> + +<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.docker</groupId> + <artifactId>docker</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <artifactId>policy-base</artifactId> + <packaging>pom</packaging> + <name>Policy Base Docker images</name> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <dist.project.version>${project.version}</dist.project.version> + <docker.skip>false</docker.skip> + <docker.skip.build>false</docker.skip.build> + <docker.skip.push>false</docker.skip.push> + <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry> + <docker.push.registry>nexus3.onap.org:10003</docker.push.registry> + <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format> + </properties> + + <profiles> + <profile> + <id>docker</id> + <modules> + <module>alpine</module> + </modules> + </profile> + </profiles> +</project> diff --git a/policy-common/alpine/README.md b/policy-common/alpine/README.md new file mode 100644 index 00000000..1ac70df5 --- /dev/null +++ b/policy-common/alpine/README.md @@ -0,0 +1,2 @@ +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 new file mode 100644 index 00000000..3668d893 --- /dev/null +++ b/policy-common/alpine/pom.xml @@ -0,0 +1,147 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson, 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========================================================= +--> + +<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.docker</groupId> + <artifactId>policy-common</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <packaging>pom</packaging> + <artifactId>policy-common-alpine</artifactId> + <name>Policy alpine common docker image</name> + <description>Policy alpine common docker image</description> + + <build> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + 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']; + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.28.0</version> + + <configuration> + <verbose>true</verbose> + <apiVersion>1.23</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <pushRegistry>${docker.push.registry}</pushRegistry> + + <images> + <image> + <name>onap/policy-common-alpine</name> + <build> + <cleanup>try</cleanup> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${project.version}</tag> + <tag>${project.version}-${maven.build.timestamp}</tag> + <tag>${project.docker.latesttag.version}</tag> + </tags> + </build> + </image> + </images> + </configuration> + + <executions> + <execution> + <id>clean-images</id> + <phase>pre-clean</phase> + <goals> + <goal>remove</goal> + </goals> + <configuration> + <removeAll>true</removeAll> + </configuration> + </execution> + + <execution> + <id>generate-images</id> + <phase>generate-sources</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>build</goal> + <goal>push</goal> + </goals> + <configuration> + <image>onap/policy-common-alpine</image> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> +</project> + diff --git a/policy-common/alpine/src/main/docker/Dockerfile b/policy-common/alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..19ea230c --- /dev/null +++ b/policy-common/alpine/src/main/docker/Dockerfile @@ -0,0 +1,34 @@ +# +# Docker file to build an image that contains commom packages for Policy apps +# +FROM onap/policy-base-alpine + +LABEL maintainer="Policy Team" + +ARG HTTP_PROXY=${HTTP_PROXY} +ARG HTTPS_PROXY=${HTTPS_PROXY} +ARG BUILD_VERSION=${BUILD_VERSION} + +ENV http_proxy $HTTP_PROXY +ENV https_proxy $HTTPS_PROXY +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 new file mode 100644 index 00000000..5e2ac5ba --- /dev/null +++ b/policy-common/pom.xml @@ -0,0 +1,53 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson, 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========================================================= +--> + +<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.docker</groupId> + <artifactId>docker</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <artifactId>policy-common</artifactId> + <packaging>pom</packaging> + <name>Policy Common Docker images</name> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <dist.project.version>${project.version}</dist.project.version> + <docker.skip>false</docker.skip> + <docker.skip.build>false</docker.skip.build> + <docker.skip.push>false</docker.skip.push> + <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry> + <docker.push.registry>nexus3.onap.org:10003</docker.push.registry> + <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format> + </properties> + + <profiles> + <profile> + <id>docker</id> + <modules> + <module>alpine</module> + </modules> + </profile> + </profiles> +</project> diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..af4077bb --- /dev/null +++ b/pom.xml @@ -0,0 +1,49 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson, 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========================================================= +--> + +<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.parent</groupId> + <artifactId>policy-parent</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.onap.policy.docker</groupId> + <artifactId>docker</artifactId> + <packaging>pom</packaging> + <name>Policy Docker images</name> + <properties> + <!-- Project common build settings --> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <profiles> + <profile> + <id>docker</id> + <modules> + <module>policy-base</module> + <module>policy-common</module> + </modules> + </profile> + </profiles> +</project> |