diff options
-rw-r--r-- | docker-compose/README.md | 88 | ||||
-rwxr-xr-x | docker-compose/docker-compose.yml | 28 | ||||
-rw-r--r-- | pom.xml | 64 |
3 files changed, 180 insertions, 0 deletions
diff --git a/docker-compose/README.md b/docker-compose/README.md new file mode 100644 index 00000000..4dfe20e4 --- /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 00000000..5b7e2970 --- /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 @@ -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 |