Watchdog-process that syncs 'ADVISED' CM Handles
[cps.git] / docker-compose / README.md
index ca395df..623968f 100644 (file)
-# Docker Compose deployment example for local enviroments, CPS deployment is done via OOM
+<!--
+  ============LICENSE_START=======================================================
+   Copyright (C) 2020 Pantheon.tech
+   Modifications Copyright (C) 2020-2021 Nordix Foundation.
+   Modifications Copyright (C) 2021 Bell Canada.
+  ================================================================================
+  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
 
-To run the application locally using `docker-compose`, execute following command from this `docker-compose` folder:
+       http://www.apache.org/licenses/LICENSE-2.0
 
-Generate the containers
+  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=========================================================
+-->
+
+# Building and running CPS locally
+
+## Building Java Archive only
+
+Following command builds all Java components to `cps-application/target/cps-application-x.y.z-SNAPSHOT.jar` JAR file
+without generating any docker images:
+
+```bash
+mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker -Djib.skip
+```
+
+## Building Java Archive and Docker images
+
+* Following command builds the JAR file and also generates the Docker image for all CPS components:
+
+```bash
+mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker
+```
+
+* Following command builds the JAR file and generates the Docker image for specified CPS component:
+  (with `<docker-profile>` being one of `cps-docker`, `ncmp-docker` or `cps-ncmp-docker`):
+
+```bash
+mvn clean install -P<docker-profile>
+```
+
+## Running Docker containers
+
+`docker-compose/docker-compose.yml` file is provided to be run with `docker-compose` tool and images previously built.
+It starts both Postgres database and CPS services.
+
+1. Edit `docker-compose.yml`
+   1. uncomment desired service to be deployed, by default `cps-and-ncmp` is enabled. You can comment it and uncomment `cps-standalone` or `ncmp-standalone`.
+   2. To send data-updated events to kafka,
+      * uncomment the `zookeeper` and `kafka` services.
+      * uncomment environment variables
+        * `notification.data-updated.enabled: 'true'`
+        * `KAFKA_BOOTSTRAP_SERVER: kafka:9092`
+        * `NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'`
+2. Execute following command from `docker-compose` folder:
+
+Use one of the below version type that has been generated in the local system's docker image list after the build.
 ```bash
-mvn clean install -Pcps-docker -Pxnf-docker -Pcps-xnf-docker
+VERSION=latest DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
+or
+VERSION=<version> DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
 ```
-or for generate an specific type
+
+## Running or debugging Java built code
+
+Before running CPS, a Postgres database instance needs to be started. This can be done with following
+command:
+
+```bash
+docker run --name postgres -p 5432:5432 -d \
+  -e POSTGRES_DB=cpsdb -e POSTGRES_USER=cps -e POSTGRES_PASSWORD=cps \
+  postgres:12.4-alpine
+```
+
+Then CPS 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
-mvn clean install -Pcps-docker
+DB_HOST=localhost DB_USERNAME=cps DB_PASSWORD=cps CPS_CORE_USERNAME=cpsuser CPS_CORE_PASSWORD=cpsr0cks! \
+  java -jar cps-application/target/cps-application-x.y.z-SNAPSHOT.jar
 ```
-Run the containers
+
+### Running from IntelliJ IDE
+
+Here are the steps to run or debug the application from Intellij:
+
+1. Enable the desired maven profile form Maven Tool Window
+2. Run a configuration from `Run -> Edit configurations` with following settings:
+   * `Environment variables`: `DB_HOST=localhost;DB_USERNAME=cps;DB_PASSWORD=cps
+                                CPS_CORE_USERNAME=cpsuser CPS_CORE_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.html`
+* `http://localhost:<port-number>/api-docs/cps-core/openapi.yaml`
+* `http://localhost:<port-number>/api-docs/cps-ncmp/openapi.yaml`
+* `http://localhost:<port-number>/api-docs/cps-ncmp/openapi-inventory.yaml`
+
+with <port-number> being either `8080` if running the plain Java build or retrieved using following command
+if running from `docker-compose`:
 
 ```bash
-VERSION=0.0.1-SNAPSHOT DB_HOST=dbpostgresql DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
-```
\ No newline at end of file
+docker inspect \
+  --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' \
+  <cps-docker-container>
+```
+
+Enjoy CPS !