Updated the documentation with limitation of leaf condition
[cps.git] / docker-compose / README.md
1 <!--
2   ============LICENSE_START=======================================================
3    Copyright (C) 2020 Pantheon.tech
4    Modifications Copyright (C) 2020-2021 Nordix Foundation.
5    Modifications Copyright (C) 2021 Bell Canada.
6   ================================================================================
7   Licensed under the Apache License, Version 2.0 (the "License");
8   you may not use this file except in compliance with the License.
9   You may obtain a copy of the License at
10
11        http://www.apache.org/licenses/LICENSE-2.0
12
13   Unless required by applicable law or agreed to in writing, software
14   distributed under the License is distributed on an "AS IS" BASIS,
15   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   See the License for the specific language governing permissions and
17   limitations under the License.
18
19   SPDX-License-Identifier: Apache-2.0
20   ============LICENSE_END=========================================================
21 -->
22
23 # Building and running CPS locally
24
25 ## Building Java Archive only
26
27 Following command builds all Java components to `cps-application/target/cps-application-x.y.z-SNAPSHOT.jar` JAR file
28 without generating any docker images:
29
30 ```bash
31 mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker -Djib.skip
32 ```
33
34 ## Building Java Archive and Docker images
35
36 * Following command builds the JAR file and also generates the Docker image for all CPS components:
37
38 ```bash
39 mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker
40 ```
41
42 * Following command builds the JAR file and generates the Docker image for specified CPS component:
43   (with `<docker-profile>` being one of `cps-docker`, `ncmp-docker` or `cps-ncmp-docker`):
44
45 ```bash
46 mvn clean install -P<docker-profile>
47 ```
48
49 ## Running Docker containers
50
51 `docker-compose/docker-compose.yml` file is provided to be run with `docker-compose` tool and images previously built.
52 It starts both Postgres database and CPS services.
53
54 1. Edit `docker-compose.yml`
55    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`.
56    2. To send data-updated events to kafka,
57       * uncomment the `zookeeper` and `kafka` services.
58       * uncomment environment variables
59         * `notification.data-updated.enabled: 'true'`
60         * `KAFKA_BOOTSTRAP_SERVER: kafka:9092`
61         * `NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'`
62 2. Execute following command from `docker-compose` folder:
63
64 Use one of the below version type that has been generated in the local system's docker image list after the build.
65 ```bash
66 VERSION=latest DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
67 or
68 VERSION=<version> DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
69 ```
70
71 ## Running or debugging Java built code
72
73 Before running CPS, a Postgres database instance needs to be started. This can be done with following
74 command:
75
76 ```bash
77 docker run --name postgres -p 5432:5432 -d \
78   -e POSTGRES_DB=cpsdb -e POSTGRES_USER=cps -e POSTGRES_PASSWORD=cps \
79   postgres:12.4-alpine
80 ```
81
82 Then CPS can be started either using a Java Archive previously built or directly from Intellij IDE.
83
84 ### Running from Jar Archive
85
86 Following command starts the application using JAR file:
87
88 ```bash
89 DB_HOST=localhost DB_USERNAME=cps DB_PASSWORD=cps CPS_CORE_USERNAME=cpsuser CPS_CORE_PASSWORD=cpsr0cks! \
90   java -jar cps-application/target/cps-application-x.y.z-SNAPSHOT.jar
91 ```
92
93 ### Running from IntelliJ IDE
94
95 Here are the steps to run or debug the application from Intellij:
96
97 1. Enable the desired maven profile form Maven Tool Window
98 2. Run a configuration from `Run -> Edit configurations` with following settings:
99    * `Environment variables`: `DB_HOST=localhost;DB_USERNAME=cps;DB_PASSWORD=cps
100                                 CPS_CORE_USERNAME=cpsuser CPS_CORE_PASSWORD=cpsr0cks!`
101
102 ## Accessing services
103
104 Swagger UI and Open API specifications are available to discover service endpoints and send requests.
105
106 * `http://localhost:<port-number>/swagger-ui.html`
107 * `http://localhost:<port-number>/api-docs/cps-core/openapi.yaml`
108 * `http://localhost:<port-number>/api-docs/cps-ncmp/openapi.yaml`
109 * `http://localhost:<port-number>/api-docs/cps-ncmp/openapi-inventory.yaml`
110
111 with <port-number> being either `8080` if running the plain Java build or retrieved using following command
112 if running from `docker-compose`:
113
114 ```bash
115 docker inspect \
116   --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' \
117   <cps-docker-container>
118 ```
119
120 Enjoy CPS !