Create docker image for dmi-plugin
Issue-ID: CPS-404
Signed-off-by: tragait <rahul.tyagi@est.tech>
Change-Id: Ifa62eae6ca6e8f40ce380f95bdc434a9b1dafe4b
Signed-off-by: shivasubedi <shiva.subedi@est.tech>
diff --git a/docker-compose/README.md b/docker-compose/README.md
new file mode 100644
index 0000000..4dfe20e
--- /dev/null
+++ b/docker-compose/README.md
@@ -0,0 +1,88 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (c) 2021 Nordix Foundation.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+-->
+# Building and running dmi-plugin locally
+
+## Building Java Archive only
+
+Following command builds Java component to `ncmp-dmi-plugin/target/ncmp-dmi-plugin-x.y.z-SNAPSHOT.jar` JAR file
+without generating any docker images:
+
+```bash
+mvn clean install -Djib.skip
+```
+
+## Building Java Archive and Docker image
+
+* Following command builds the JAR file and also generates the Docker image for the dmi plugin:
+
+```bash
+mvn clean install
+```
+
+## Running Docker containers
+
+`docker-compose/docker-compose.yml` file is provided to be run with `docker-compose` tool and images previously built.
+It starts ncmp-dmi-plugin service.
+
+Execute following command from `docker-compose` folder:
+
+Use one of the below types that has been generated in the local system's docker image list after the build.
+```bash
+docker-compose up -d
+or
+VERSION=<version> docker-compose up -d
+or
+DOCKER_REPO=<docker.repo> docker-compose up -d
+or
+VERSION=<version> DOCKER_REPO=<docker_repo> docker-compose up -d
+```
+
+## Running or debugging Java built code
+
+dmi-plugin can be started either using a Java Archive previously built or directly from Intellij IDE.
+
+### Running from Jar Archive
+
+Following command starts the application using JAR file:
+
+```bash
+CPS_USERNAME=cpsuser CPS_PASSWORD=cpsr0cks! \
+ java -jar ncmp-dmi-plugin/target/ncmp-dmi-plugin-x.y.z-SNAPSHOT.jar
+```
+
+### Running from IntelliJ IDE
+
+Here are the steps to run or debug the application from Intellij:
+
+1. Enable the desired maven profile from Maven Tool Window
+2. Run a configuration from `Run -> Edit configurations` with following settings:
+ * `Environment variables`: `CPS_USERNAME=cpsuser CPS_PASSWORD=cpsr0cks!`
+
+## Accessing services
+
+Swagger UI and Open API specifications are available to discover service endpoints and send requests.
+
+* `http://localhost:<port-number>/swagger-ui/index.html`
+* `http://localhost:<port-number>/v3/api-docs?group=dmi-plugin-docket`
+
+with <port-number> being either `8080` if running the plain Java build or retrieved using following command
+if running from `docker-compose`:
+
+```bash
+docker inspect \
+ --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' \
+ <dmi-plugin-docker-container>
+```
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
new file mode 100755
index 0000000..5b7e297
--- /dev/null
+++ b/docker-compose/docker-compose.yml
@@ -0,0 +1,28 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021 Nordix Foundation
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+
+version: "3.7"
+
+services:
+ ncmp-dmi-plugin:
+ container_name: ncmp-dmi-plugin
+ image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/ncmp-dmi-plugin:${VERSION:-latest}
+ ports:
+ - "8883:8080"
+ environment:
+ CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
+ CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
+ restart: unless-stopped
diff --git a/pom.xml b/pom.xml
index 5896012..45c39dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,12 +34,17 @@
<description>DMI Plugin Service</description>
<properties>
<app>org.onap.cps.ncmp.Application</app>
+ <base.image>${docker.pull.registry}/onap/integration-java11:8.0.0</base.image>
<cps.version>1.1.0-SNAPSHOT</cps.version>
<findbugs.slf4j.version>1.5.0</findbugs.slf4j.version>
<groovy.version>3.0.8</groovy.version>
+ <image.tag>${project.version}-${maven.build.timestamp}</image.tag>
<jacoco.maven.plugin.version>0.8.5</jacoco.maven.plugin.version>
<jacoco.minimum.coverage>0.7</jacoco.minimum.coverage>
<java.version>11</java.version>
+ <jib-maven-plugin.version>2.8.0</jib-maven-plugin.version>
+ <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+ <oparent.version>3.2.0</oparent.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spock-core.version>2.0-M5-groovy-3.0</spock-core.version>
<spock-spring.version>2.0-M5-groovy-3.0</spock-spring.version>
@@ -342,5 +347,64 @@
</executions>
</plugin>
</plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>com.google.cloud.tools</groupId>
+ <artifactId>jib-maven-plugin</artifactId>
+ <version>${jib-maven-plugin.version}</version>
+ <configuration>
+ <container>
+ <mainClass>${app}</mainClass>
+ <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
+ </container>
+ <from>
+ <image>${base.image}</image>
+ </from>
+ <to>
+ <tags>
+ <tag>latest</tag>
+ </tags>
+ <image>${docker.push.registry}/onap/${image.name}:${image.tag}</image>
+ </to>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <id>build</id>
+ <goals>
+ <goal>dockerBuild</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>deploy</phase>
+ <id>buildAndPush</id>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
+ <profiles>
+ <profile>
+ <id>dmi-docker</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <properties>
+ <image.name>ncmp-dmi-plugin</image.name>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.google.cloud.tools</groupId>
+ <artifactId>jib-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
\ No newline at end of file