Update docker-compose 30/117730/14
authorClaudio D. Gasparini <claudio.gasparini@pantheon.tech>
Thu, 11 Feb 2021 07:51:06 +0000 (08:51 +0100)
committerBruno Sakoto <bruno.sakoto@bell.ca>
Mon, 15 Feb 2021 13:47:27 +0000 (08:47 -0500)
- Add more documentation
- fix application.yml location for service

Issue-ID: CPS-236
Co-authored-by: Bruno Sakoto <bruno.sakoto@bell.ca>
Signed-off-by: Claudio D. Gasparini <claudio.gasparini@pantheon.tech>
Signed-off-by: Bruno Sakoto <bruno.sakoto@bell.ca>
Change-Id: I5a16f520c9536d2034c2afd1de947058d2fb13ee

README.md
docker-compose/README.md
docker-compose/docker-compose.yml

index 8282d30..c7bbd81 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,33 +1,9 @@
 # Configuration Persistence Service
 
-This folder contains all files for
-[Configuration Persistence Service](https://wiki.onap.org/pages/viewpage.action?pageId=81406119).
+## General Information
+* [CPS Project Wiki](https://wiki.onap.org/display/DW/Configuration+Persistence+Service+Project)
+  
+## For Developers 
+* [Developer Wiki](https://wiki.onap.org/display/DW/Configuration+Persistence+Service+Developer%27s+Landing+Page)
+* [Building and running CPS locally](docker-compose/README.md)
 
-The code here is related to CPS POC, then it must be kept self contained in this cps folder to prevent any impact on
-current ccsdk components and to be ready to be moved in its own repo once CPS becomes a standalone project.
-
-
-## Running Locally
-
-* Run a postgres container instance and create `cpsdb' database:
-
-```
-CREATE USER cps WITH PASSWORD 'cps';
-CREATE DATABASE cpsdb OWNER cps;
-```
-
-* Build (from cps root folder)
-
-```bash
-mvn clean package
-```
-
-* Run (from cps root folder)
-
-```bash
-java -DDB_HOST=localhost -DDB_USERNAME=cps -DDB_PASSWORD=cps -jar cps-rest/target/cps-rest-0.0.1-SNAPSHOT.jar
-```
-
-* Browse
-  * [Swagger UI](http://localhost:8080/swagger-ui/index.html)
-  * [Api Documentation](http://localhost:8080/v3/api-docs)
index 3d68c3f..ec4868c 100644 (file)
@@ -1,34 +1,88 @@
-# Docker Compose deployment example for local enviroments, CPS deployment is done via OOM
+# Building and running CPS locally
 
-To run the application locally using `docker-compose`, execute following command from this `docker-compose` folder:
+## Building Java Archive only
 
-Compile without generating the docker images
+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 -Pxnf-docker -Pcps-xnf-docker -Djib.skip
 ```
 
-Generate the docker images
+## 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 -Pxnf-docker -Pcps-xnf-docker -Dnexus.repository=""
+```
+
+* Following command builds the JAR file and generates the Docker image for specified CPS component:
+  (with `<docker-profile>` being one of `cps-docker`, `xnf-docker` or `cps-xnf-docker`):
 
 ```bash
-mvn clean install -Pcps-docker -Pxnf-docker -Pcps-xnf-docker
+mvn clean install -P<docker-profile> -Dnexus.repository=""
 ```
 
-for generate a specific type of docker images
+## 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` and uncomment desired service to be deployed, by default `cps-and-nf-proxy`
+   is enabled. You can comment it and uncomment `cps-standalone` or `nf-proxy-standalone`.
+2. Execute following command from `docker-compose` folder:
 
 ```bash
-mvn clean install -Pcps-docker
+VERSION=x.y.z-SNAPSHOT DB_HOST=dbpostgresql DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
 ```
 
-Run the containers
+## 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
-VERSION=0.0.1-SNAPSHOT DB_HOST=dbpostgresql DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
+docker run --name postgres -p 5432:5432 -d \
+  -e POSTGRES_DB=cpsdb -e POSTGRES_USER=cps -e POSTGRES_PASSWORD=cps \
+  postgres:12.4-alpine
 ```
 
-Run application from Intellj IDE
+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
+DB_HOST=localhost DB_USERNAME=cps DB_PASSWORD=cps \
+  java -classpath cps-application/target/cps-application-x.y.z-SNAPSHOT.jar:docker-compose \
+  org.springframework.boot.loader.JarLauncher
+```
+
+### 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:
+   * `Working directory`: docker-compose folder, e.g. `$ProjectFileDir$/docker-compose`
+   * `Environment variables`: `DB_HOST=localhost;DB_USERNAME=cps;DB_PASSWORD=cps`
+
+## 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=cps-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}}' \
+  <cps-docker-container>
+```
 
-you need first to enable the maven profile desired under tab Maven
-then go to Run -> Edit configurations
- 1- Working directory -> select docker-compose folder e.g.  ~/workspace/onap/cps/docker-compose/
- 2- Enviroment variables -> add variables configuration e.g. DB_HOST=127.0.0.1;DB_USERNAME=cps;DB_PASSWORD=cps
\ No newline at end of file
+Enjoy CPS !
index beae091..fcb4a53 100644 (file)
@@ -1,41 +1,58 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2020 Pantheon.tech.
+# 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
+#
+#       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:
-  cps:
-    container_name: cps-service
-    image: nexus3.onap.org:10001/onap/cps-service:${VERSION}
-    volumes:
-      - "./application.yml:/app/application.yml"
-    ports:
-      - "8881:8080"
-    environment:
-      DB_HOST: ${DB_HOST}
-      DB_USERNAME: ${DB_USERNAME}
-      DB_PASSWORD: ${DB_PASSWORD}
-    restart: unless-stopped
-    depends_on:
-      - dbpostgresql
+  #cps-standalone:
+  #  container_name: cps-service
+  #  image: ps-service:${VERSION}
+  #  volumes:
+  #    - "./application.yml:/app/resources/application.yml"
+  #  ports:
+  #    - "8881:8080"
+  #  environment:
+  #    DB_HOST: ${DB_HOST}
+  #    DB_USERNAME: ${DB_USERNAME}
+  #    DB_PASSWORD: ${DB_PASSWORD}
+  #  restart: unless-stopped
+  #  depends_on:
+  #    - dbpostgresql
 
-  cps-nf-proxy:
-    container_name: cps-nf-proxy
-    image: nexus3.onap.org:10001/onap/cps-nf-proxy:${VERSION}
-    volumes:
-      - "./application.yml:/app/application.yml"
-    ports:
-      - "8882:8080"
-    environment:
-      DB_HOST: ${DB_HOST}
-      DB_USERNAME: ${DB_USERNAME}
-      DB_PASSWORD: ${DB_PASSWORD}
-    restart: unless-stopped
-    depends_on:
-      - dbpostgresql
+  #nf-proxy-standalone:
+  #  container_name: cps-nf-proxy
+  #  image: cps-nf-proxy:${VERSION}
+  #  volumes:
+  #    - "./application.yml:/app/resources/application.yml"
+  #  ports:
+  #    - "8882:8080"
+  #  environment:
+  #    DB_HOST: ${DB_HOST}
+  #    DB_USERNAME: ${DB_USERNAME}
+  #    DB_PASSWORD: ${DB_PASSWORD}
+  #  restart: unless-stopped
+  #  depends_on:
+  #    - dbpostgresql
 
   cps-and-nf-proxy:
     container_name: cps-and-nf-proxy
-    image: nexus3.onap.org:10001/onap/cps-and-nf-proxy:${VERSION}
+    image: cps-and-nf-proxy:${VERSION}
     volumes:
-      - "./application.yml:/app/application.yml"
+      - "./application.yml:/app/resources/application.yml"
     ports:
       - "8883:8080"
     environment:
@@ -48,7 +65,7 @@ services:
 
   dbpostgresql:
     container_name: dbpostgresql
-    image: postgres
+    image: postgres:12.4-alpine
     ports:
       - '5432:5432'
     environment: