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