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