summaryrefslogtreecommitdiffstats
path: root/compose/README.md
blob: 290bdf4eb00370a3925a1b718f1434e885eb67fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Policy Framework Docker Compose

The PF docker compose starts a small instance of docker containers for PF components.

## Features

- Starts all components, including Prometheus/Grafana dashboard
- Can start specific components
- Expose fixed ports so all the REST endpoints can be called with localhost:component_port

## Tech

Things to be installed beforehand:

- Linux VM if using Windows
- Docker
- Docker compose
- Any editor

## Installation

Assuming the docker repository has been cloned and workdir is ../docker/compose

- Install all PF components
```sh
./start-compose.sh
```

- Install an specific PF component
(accepted options: api pap apex-pdp distribution drools-pdp drools-apps xacml-pdp
policy-clamp-runtime-acm)


```sh
./start-compose.sh component

# that will start apex-pdp and its dependencies (pap, api, db, simulator)
./start-compose.sh apex-pdp
```

- Install an specific PF component with Grafana dashboard
(accepted options: api pap apex-pdp distribution drools-pdp drools-apps xacml-pdp
policy-clamp-runtime-acm)


```sh
./start-compose.sh component --grafana

# that will start apex-pdp and its dependencies (pap, api, db, simulator) + grafana and prometheus server
./start-compose.sh apex-pdp --grafana
```

## Docker image download localization

The docker images are always downloaded from nexus repository, but if needed to build a local
image, edit the ``get-versions.sh`` script and change the variable ``LOCAL_IMAGES``
to `true` or edit the image tag in the docker compose file.
Changing the variable to `true` will ensure that the newly built images locally are being used
by not requesting a download from nexus and using the image tagged as latest.


## Docker image versions

The start-compose script is always looking for the latest SNAPSHOT version available (will
look locally first, then download from nexus if not available).
Note: if latest Policy-API docker image is 2.8-SNAPSHOT-latest, but on nexus it was released
2 days ago and in local environment it's 3 months old - it will use the 3 months old image,
so it's recommended to keep an eye on it.

If needed, the version can be edited on any docker compose yml file.

i.e: need to change db-migrator version
from compose.{database}.yml:
``image: ${CONTAINER_LOCATION}onap/policy-db-migrator:${POLICY_DOCKER_VERSION}``

replace the ${POLICY_DOCKER_VERSION} for the specific version needed


## Logs

Use ``docker compose logs`` or `docker logs ${container_name}` instructions on how to collect logs.

## Uninstall

Simply run the ``stop-compose.sh`` script. This will also generate logs from the services started with compose.

```sh
./stop-compose.sh
```

## Database support

From Oslo version onwards, this docker compose setup uses Postgres database as default; MariaDB is still available,
but support might be limited.

To start docker compose with MariaDB, add a flag to use it:

```sh
# that will start apex-pdp and its dependencies (pap, api, mariadb, simulator)
./start-compose.sh apex-pdp --mariadb
# that will start apex-pdp and its dependencies (pap, api, postgres, simulator)
./start-compose.sh apex-pdp
```

### Docker compose files

To make it easier and clear how the docker compose system works, there are three files describing the services
- compose.common.yml
  - Has policy services that don't connect directly to database: apex-pdp and distribution
  - Simulator service
  - ACM-R Participants that don't connect directly to database.
  - Messaging services (kafka, zookeeper)
  - Metrics services (prometheus, grafana, jaeger)
- compose.postgres.yml
  - All policy services that connect directly to database with Postgres configurations
  - Postgres database and policy-db-migrator working towards it
- compose.mariadb.yml
  - All policy services that connect directly to database with MariaDB configurations
  - MariaDB database and policy-db-migrator working towards it