From 4e07d48caae2cdcfa2a583070c08bb572dbb683f Mon Sep 17 00:00:00 2001 From: "Claudio D. Gasparini" Date: Thu, 11 Feb 2021 08:51:06 +0100 Subject: Update docker-compose - Add more documentation - fix application.yml location for service Issue-ID: CPS-236 Co-authored-by: Bruno Sakoto Signed-off-by: Claudio D. Gasparini Signed-off-by: Bruno Sakoto Change-Id: I5a16f520c9536d2034c2afd1de947058d2fb13ee --- README.md | 36 +++-------------- docker-compose/README.md | 82 ++++++++++++++++++++++++++++++++------- docker-compose/docker-compose.yml | 79 ++++++++++++++++++++++--------------- 3 files changed, 122 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 8282d30cae..c7bbd8116a 100644 --- 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) diff --git a/docker-compose/README.md b/docker-compose/README.md index 3d68c3ff4b..ec4868cbb0 100644 --- a/docker-compose/README.md +++ b/docker-compose/README.md @@ -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 `` 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 -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:/swagger-ui/index.html` +* `http://localhost:/v3/api-docs?group=cps-docket` + +with 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}}' \ + +``` -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 ! diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index beae091f1b..fcb4a53811 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -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: -- cgit 1.2.3-korg