aboutsummaryrefslogtreecommitdiffstats
path: root/docker-compose
diff options
context:
space:
mode:
authorClaudio D. Gasparini <claudio.gasparini@pantheon.tech>2021-02-11 08:51:06 +0100
committerBruno Sakoto <bruno.sakoto@bell.ca>2021-02-15 08:47:27 -0500
commit4e07d48caae2cdcfa2a583070c08bb572dbb683f (patch)
treeac6381295b09a9cf062425cf751d453244ee7618 /docker-compose
parent994c59050730a200d030ade14b768539089576a2 (diff)
Update docker-compose
- 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
Diffstat (limited to 'docker-compose')
-rw-r--r--docker-compose/README.md82
-rw-r--r--docker-compose/docker-compose.yml79
2 files changed, 116 insertions, 45 deletions
diff --git a/docker-compose/README.md b/docker-compose/README.md
index 3d68c3ff4..ec4868cbb 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 `<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 !
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
index beae091f1..fcb4a5381 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: