NOISSUE - Simplify docker deployment (#275)

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
This commit is contained in:
b1ackd0t
2024-01-29 18:53:05 +03:00
committed by GitHub
parent 2c4880485d
commit 562c578108
13 changed files with 145 additions and 262 deletions
+3 -53
View File
@@ -21,7 +21,6 @@ DOCKER_PROJECT ?= $(shell echo $(subst $(space),,$(USER_REPO)) | tr -c -s '[:aln
DOCKER_COMPOSE_COMMANDS_SUPPORTED := up down config
DEFAULT_DOCKER_COMPOSE_COMMAND := up
GRPC_MTLS_CERT_FILES_EXISTS = 0
DOCKER_PROFILE ?= $(MG_MQTT_BROKER_TYPE)_$(MG_MESSAGE_BROKER_TYPE)
MOCKERY_VERSION=v2.38.0
ifneq ($(MG_MESSAGE_BROKER_TYPE),)
MG_MESSAGE_BROKER_TYPE := $(MG_MESSAGE_BROKER_TYPE)
@@ -29,12 +28,6 @@ else
MG_MESSAGE_BROKER_TYPE=nats
endif
ifneq ($(MG_MQTT_BROKER_TYPE),)
MG_MQTT_BROKER_TYPE := $(MG_MQTT_BROKER_TYPE)
else
MG_MQTT_BROKER_TYPE=nats
endif
ifneq ($(MG_ES_TYPE),)
MG_ES_TYPE := $(MG_ES_TYPE)
else
@@ -111,7 +104,7 @@ clean:
cleandocker:
# Stops containers and removes containers, networks, volumes, and images created by up
docker compose -f docker/docker-compose.yml --profile $(DOCKER_PROFILE) -p $(DOCKER_PROJECT) down --rmi all -v --remove-orphans
docker compose -f docker/docker-compose.yml -p $(DOCKER_PROJECT) down --rmi all -v --remove-orphans
ifdef pv
# Remove unused volumes
@@ -208,53 +201,10 @@ endif
endif
endif
define edit_docker_config
sed -i "s/MG_MQTT_BROKER_TYPE=.*/MG_MQTT_BROKER_TYPE=$(1)/" docker/.env
sed -i "s/MG_MQTT_BROKER_HEALTH_CHECK=.*/MG_MQTT_BROKER_HEALTH_CHECK=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_HEALTH_CHECK}/" docker/.env
sed -i "s/MG_MQTT_ADAPTER_WS_TARGET_PATH=.*/MG_MQTT_ADAPTER_WS_TARGET_PATH=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_WS_TARGET_PATH}/" docker/.env
sed -i "s/MG_MESSAGE_BROKER_TYPE=.*/MG_MESSAGE_BROKER_TYPE=$(2)/" docker/.env
sed -i "s,file: .*.yml,file: brokers/$(2).yml," docker/brokers/docker-compose.yml
sed -i "s,MG_MESSAGE_BROKER_URL=.*,MG_MESSAGE_BROKER_URL=$$\{MG_$(shell echo ${MG_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
sed -i "s,MG_MQTT_ADAPTER_MQTT_QOS=.*,MG_MQTT_ADAPTER_MQTT_QOS=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_MQTT_QOS\}," docker/.env
endef
change_config:
ifeq ($(DOCKER_PROFILE),nats_nats)
sed -i "s/- broker/- nats/g" docker/docker-compose.yml
sed -i "s/- rabbitmq/- nats/g" docker/docker-compose.yml
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://nats:$$\{MG_NATS_PORT}," docker/.env
$(call edit_docker_config,nats,nats)
else ifeq ($(DOCKER_PROFILE),nats_rabbitmq)
sed -i "s/nats/broker/g" docker/docker-compose.yml
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://nats:$$\{MG_NATS_PORT}," docker/.env
sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml
$(call edit_docker_config,nats,rabbitmq)
else ifeq ($(DOCKER_PROFILE),vernemq_nats)
sed -i "s/nats/broker/g" docker/docker-compose.yml
sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://broker:$$\{MG_NATS_PORT}," docker/.env
$(call edit_docker_config,vernemq,nats)
else ifeq ($(DOCKER_PROFILE),vernemq_rabbitmq)
sed -i "s/nats/broker/g" docker/docker-compose.yml
sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml
$(call edit_docker_config,vernemq,rabbitmq)
else
$(error Invalid DOCKER_PROFILE $(DOCKER_PROFILE))
endif
run: check_certs change_config
ifeq ($(MG_ES_TYPE), redis)
sed -i "s/MG_ES_TYPE=.*/MG_ES_TYPE=redis/" docker/.env
sed -i "s/MG_ES_URL=.*/MG_ES_URL=$$\{MG_REDIS_URL}/" docker/.env
docker compose -f docker/docker-compose.yml --profile $(DOCKER_PROFILE) --profile redis -p $(DOCKER_PROJECT) $(DOCKER_COMPOSE_COMMAND) $(args)
else
sed -i "s,MG_ES_TYPE=.*,MG_ES_TYPE=$$\{MG_MESSAGE_BROKER_TYPE}," docker/.env
sed -i "s,MG_ES_URL=.*,MG_ES_URL=$$\{MG_$(shell echo ${MG_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
docker compose -f docker/docker-compose.yml --env-file docker/.env --profile $(DOCKER_PROFILE) -p $(DOCKER_PROJECT) $(DOCKER_COMPOSE_COMMAND) $(args)
endif
run: check_certs
docker compose -f docker/docker-compose.yml --env-file docker/.env -p $(DOCKER_PROJECT) $(DOCKER_COMPOSE_COMMAND) $(args)
run_addons: check_certs
$(call change_config)
$(foreach SVC,$(RUN_ADDON_ARGS),$(if $(filter $(SVC),$(ADDON_SERVICES) $(EXTERNAL_SERVICES)),,$(error Invalid Service $(SVC))))
@for SVC in $(RUN_ADDON_ARGS); do \
MG_ADDONS_CERTS_PATH_PREFIX="../." docker compose -f docker/addons/$$SVC/docker-compose.yml -p $(DOCKER_PROJECT) --env-file ./docker/.env $(DOCKER_COMPOSE_COMMAND) $(args) & \
+1 -1
View File
@@ -51,7 +51,7 @@ Developing Magistrala will also require:
Once the prerequisites are installed, execute the following commands from the project's root:
```bash
docker compose -f docker/docker-compose.yml --env-file docker/.env --profile nats_nats -p git_github_com_absmach_magistrala_git_ up
docker compose -f docker/docker-compose.yml --env-file docker/.env -p git_github_com_absmach_magistrala_git_ up
```
This will bring up the Magistrala docker services and interconnect them. This command can also be executed using the project's included Makefile:
+3 -3
View File
@@ -12,7 +12,7 @@ MG_NGINX_MQTTS_PORT=8883
MG_NATS_PORT=4222
MG_NATS_HTTP_PORT=8222
MG_NATS_JETSTREAM_KEY=u7wFoAPgXpDueXOFldBnXDh4xjnSOyEJ2Cb8Z5SZvGLzIZ3U4exWhhoIBZHzuNvh
MG_NATS_URL=nats://broker:${MG_NATS_PORT}
MG_NATS_URL=nats://nats:${MG_NATS_PORT}
# Configs for nats as MQTT broker
MG_NATS_HEALTH_CHECK=http://nats:${MG_NATS_HTTP_PORT}/healthz
MG_NATS_WS_TARGET_PATH=
@@ -25,7 +25,7 @@ MG_RABBITMQ_USER=magistrala
MG_RABBITMQ_PASS=magistrala
MG_RABBITMQ_COOKIE=magistrala
MG_RABBITMQ_VHOST=/
MG_RABBITMQ_URL=amqp://${MG_RABBITMQ_USER}:${MG_RABBITMQ_PASS}@broker:${MG_RABBITMQ_PORT}${MG_RABBITMQ_VHOST}
MG_RABBITMQ_URL=amqp://${MG_RABBITMQ_USER}:${MG_RABBITMQ_PASS}@rabbitmq:${MG_RABBITMQ_PORT}${MG_RABBITMQ_VHOST}
## Message Broker
MG_MESSAGE_BROKER_TYPE=nats
@@ -55,7 +55,7 @@ MG_REDIS_URL=redis://es-redis:${MG_REDIS_TCP_PORT}/0
## Event Store
MG_ES_TYPE=${MG_MESSAGE_BROKER_TYPE}
MG_ES_URL=${MG_NATS_URL}
MG_ES_URL=${MG_MESSAGE_BROKER_URL}
## Jaeger
MG_JAEGER_COLLECTOR_OTLP_ENABLED=true
+97 -1
View File
@@ -10,7 +10,7 @@ Follow the [official documentation](https://docs.docker.com/compose/install/).
## Usage
Run following commands from project root directory.
Run the following commands from the project root directory.
```bash
docker-compose -f docker/docker-compose.yml up
@@ -21,3 +21,99 @@ docker-compose -f docker/addons/<path>/docker-compose.yml up
```
To pull docker images from a specific release you need to change the value of `MG_RELEASE_TAG` in `.env` before running these commands.
## Broker Configuration
Magistrala supports configurable MQTT broker and Message broker, which also acts as an events store. Magistrala uses two types of brokers:
1. MQTT_BROKER: Handles MQTT communication between MQTT adapters and message broker. This can either be 'VerneMQ' or 'NATS'.
2. MESSAGE_BROKER: Manages message exchange between Magistrala core, optional, and external services. This can either be 'NATS' or 'RabbitMQ'. This is used to store messages for distributed processing.
Events store: This is used by Magistrala services to store events for distributed processing. Magistrala uses a single service to be the message broker and events store. This can either be 'NATS' or 'RabbitMQ'. Redis can also be used as an events store, but it requires a message broker to be deployed along with it for message exchange.
This is the same as MESSAGE_BROKER. This can either be 'NATS' or 'RabbitMQ' or 'Redis'. If Redis is used as an events store, then RabbitMQ or NATS is used as a message broker.
The current deployment strategy for Magistrala in `docker/docker-compose.yml` is to use VerneMQ as a MQTT_BROKER and NATS as a MESSAGE_BROKER and EVENTS_STORE.
Therefore, the following combinations are possible:
- MQTT_BROKER: VerneMQ, MESSAGE_BROKER: NATS, EVENTS_STORE: NATS
- MQTT_BROKER: VerneMQ, MESSAGE_BROKER: NATS, EVENTS_STORE: Redis
- MQTT_BROKER: VerneMQ, MESSAGE_BROKER: RabbitMQ, EVENTS_STORE: RabbitMQ
- MQTT_BROKER: VerneMQ, MESSAGE_BROKER: RabbitMQ, EVENTS_STORE: Redis
- MQTT_BROKER: NATS, MESSAGE_BROKER: RabbitMQ, EVENTS_STORE: RabbitMQ
- MQTT_BROKER: NATS, MESSAGE_BROKER: RabbitMQ, EVENTS_STORE: Redis
- MQTT_BROKER: NATS, MESSAGE_BROKER: NATS, EVENTS_STORE: NATS
- MQTT_BROKER: NATS, MESSAGE_BROKER: NATS, EVENTS_STORE: Redis
For Message brokers other than NATS, you would need to build the docker images with RabbitMQ as the build tag and change the `docker/.env`. For example, to use RabbitMQ as a message broker:
```bash
MG_MESSAGE_BROKER_TYPE=rabbitmq make dockers
```
```env
MG_MESSAGE_BROKER_TYPE=rabbitmq
MG_MESSAGE_BROKER_URL=${MG_RABBITMQ_URL}
```
For Redis as an events store, you would need to run RabbitMQ or NATS as a message broker. For example, to use Redis as an events store with rabbitmq as a message broker:
```bash
MG_ES_TYPE=redis MG_MESSAGE_BROKER_TYPE=rabbitmq make dockers
```
```env
MG_MESSAGE_BROKER_TYPE=rabbitmq
MG_MESSAGE_BROKER_URL=${MG_RABBITMQ_URL}
MG_ES_TYPE=redis
MG_ES_URL=${MG_REDIS_URL}
```
For MQTT broker other than VerneMQ, you would need to change the `docker/.env`. For example, to use NATS as a MQTT broker:
```env
MG_MQTT_BROKER_TYPE=nats
MG_MQTT_BROKER_HEALTH_CHECK=${MG_NATS_HEALTH_CHECK}
MG_MQTT_ADAPTER_MQTT_QOS=${MG_NATS_MQTT_QOS}
MG_MQTT_ADAPTER_MQTT_TARGET_HOST=${MG_MQTT_BROKER_TYPE}
MG_MQTT_ADAPTER_MQTT_TARGET_PORT=1883
MG_MQTT_ADAPTER_MQTT_TARGET_HEALTH_CHECK=${MG_MQTT_BROKER_HEALTH_CHECK}
MG_MQTT_ADAPTER_WS_TARGET_HOST=${MG_MQTT_BROKER_TYPE}
MG_MQTT_ADAPTER_WS_TARGET_PORT=8080
MG_MQTT_ADAPTER_WS_TARGET_PATH=${MG_NATS_WS_TARGET_PATH}
```
### RabbitMQ configuration
```yaml
services:
rabbitmq:
image: rabbitmq:3.12.12-management-alpine
container_name: magistrala-rabbitmq
restart: on-failure
environment:
RABBITMQ_ERLANG_COOKIE: ${MG_RABBITMQ_COOKIE}
RABBITMQ_DEFAULT_USER: ${MG_RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${MG_RABBITMQ_PASS}
RABBITMQ_DEFAULT_VHOST: ${MG_RABBITMQ_VHOST}
ports:
- ${MG_RABBITMQ_PORT}:${MG_RABBITMQ_PORT}
- ${MG_RABBITMQ_HTTP_PORT}:${MG_RABBITMQ_HTTP_PORT}
networks:
- magistrala-base-net
```
### Redis configuration
```yaml
services:
redis:
image: redis:7.2.4-alpine
container_name: magistrala-es-redis
restart: on-failure
networks:
- magistrala-base-net
volumes:
- magistrala-broker-volume:/data
```
-34
View File
@@ -1,34 +0,0 @@
# Brokers Docker Compose
Magistrala supports configurable MQTT broker and Message broker.
## MQTT Broker
Magistrala supports VerneMQ and Nats as an MQTT broker.
## Message Broker
Magistrala supports NATS and RabbitMQ as a message broker.
## Profiles
This directory contains 4 docker-compose profiles for running Magistrala with different combinations of MQTT and message brokers.
The profiles are:
- `vernemq_nats` - VerneMQ as an MQTT broker and Nats as a message broker
- `vernemq_rabbitmq` - VerneMQ as an MQTT broker and RabbitMQ as a message broker
- `nats_nats` - Nats as an MQTT broker and Nats as a message broker
- `nats_rabbitmq` - Nats as an MQTT broker and RabbitMQ as a message broker
The following command will run VerneMQ as an MQTT broker and Nats as a message broker:
```bash
MG_MQTT_BROKER_TYPE=vernemq MG_MESSAGE_BROKER_TYPE=nats make run
```
The following command will run VerneMQ as an MQTT broker and RabbitMQ as a message broker:
```bash
MG_MQTT_BROKER_TYPE=vernemq MG_MESSAGE_BROKER_TYPE=rabbitmq make run
```
-51
View File
@@ -1,51 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
# This file configures Magistrala brokers. Magistrala uses two types of brokers:
# 1. MQTT_BROKER: Handles MQTT communication between MQTT adapters and message broker.
# 2. MESSAGE_BROKER: Manages communication between adapters and Magistrala writer services.
#
# MQTT_BROKER can be either 'vernemq' or 'nats'.
# MESSAGE_BROKER can be either 'nats' or 'rabbitmq'.
#
# Each broker has a unique profile for configuration. The available profiles are:
# - vernemq_nats: Uses 'vernemq' as MQTT_BROKER and 'nats' as MESSAGE_BROKER.
# - vernemq_rabbitmq: Uses 'vernemq' as MQTT_BROKER and 'rabbitmq' as MESSAGE_BROKER.
# - nats_nats: Uses 'nats' as both MQTT_BROKER and MESSAGE_BROKER.
# - nats_rabbitmq: Uses 'nats' as MQTT_BROKER and 'rabbitmq' as MESSAGE_BROKER.
#
include:
- path: brokers/profiles/nats.yml
env_file: docker/.env
services:
vernemq:
image: magistrala/vernemq:${MG_RELEASE_TAG}
container_name: magistrala-vernemq
restart: on-failure
environment:
DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${MG_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
DOCKER_VERNEMQ_LOG__CONSOLE__LEVEL: ${MG_DOCKER_VERNEMQ_LOG__CONSOLE__LEVEL}
networks:
- magistrala-base-net
volumes:
- magistrala-mqtt-broker-volume:/var/lib/vernemq
profiles:
- vernemq_nats
- vernemq_rabbitmq
broker:
extends:
file: brokers/nats.yml
service: broker
container_name: magistrala-broker
restart: on-failure
networks:
- magistrala-base-net
volumes:
- magistrala-broker-volume:/data
profiles:
- vernemq_nats
- vernemq_rabbitmq
- nats_rabbitmq
-16
View File
@@ -1,16 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
services:
broker:
image: nats:2.10.9-alpine
command: "--config=/etc/nats/nats.conf"
volumes:
- ./../nats/:/etc/nats
environment:
- MG_NATS_PORT=${MG_NATS_PORT}
- MG_NATS_HTTP_PORT=${MG_NATS_HTTP_PORT}
- MG_NATS_JETSTREAM_KEY=${MG_NATS_JETSTREAM_KEY}
ports:
- ${MG_NATS_PORT}:${MG_NATS_PORT}
- ${MG_NATS_HTTP_PORT}:${MG_NATS_HTTP_PORT}
-24
View File
@@ -1,24 +0,0 @@
# Nats Docker Profiles
This directory contains the docker-compose profiles for running Nats as an MQTT broker. It is separated from the main profile at `../docker-compose.yml` because of name conflicts with the Nats message broker.
The configuration is the same as for the main profile, except that the MQTT broker is set to `nats` instead of `vernemq`.
The profiles are:
- `nats_nats.yml` - Nats as an MQTT broker and Nats as a message broker
- `nats_rabbit.yml` - Nats as an MQTT broker and RabbitMQ as a message broker
They are automatically included in the main profile, so you can run them depending on the profile you want to use:
The following command will run Nats as an MQTT broker and Nats as a message broker:
```bash
MG_MQTT_BROKER_TYPE=nats MG_MESSAGE_BROKER_TYPE=nats make run
```
The following command will run Nats as an MQTT broker and RabbitMQ as a message broker:
```bash
MG_MQTT_BROKER_TYPE=nats MG_MESSAGE_BROKER_TYPE=rabbit make run
```
-19
View File
@@ -1,19 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
# This file is used to configure NATS broker.
# It used when running nats both as an MQTT and Message broker.
services:
nats:
extends:
file: brokers/nats.yml
service: broker
container_name: magistrala-nats
restart: on-failure
networks:
- magistrala-base-net
volumes:
- magistrala-broker-volume:/data
profiles:
- nats_nats
- nats_rabbitmq
-14
View File
@@ -1,14 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
services:
broker:
image: rabbitmq:3.12.12-management-alpine
environment:
RABBITMQ_ERLANG_COOKIE: ${MG_RABBITMQ_COOKIE}
RABBITMQ_DEFAULT_USER: ${MG_RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${MG_RABBITMQ_PASS}
RABBITMQ_DEFAULT_VHOST: ${MG_RABBITMQ_VHOST}
ports:
- ${MG_RABBITMQ_PORT}:${MG_RABBITMQ_PORT}
- ${MG_RABBITMQ_HTTP_PORT}:${MG_RABBITMQ_HTTP_PORT}
+41 -12
View File
@@ -12,19 +12,12 @@ volumes:
magistrala-users-db-volume:
magistrala-things-db-volume:
magistrala-things-redis-volume:
magistrala-mqtt-broker-volume:
magistrala-broker-volume:
magistrala-es-volume:
magistrala-mqtt-broker-volume:
magistrala-spicedb-db-volume:
magistrala-auth-db-volume:
magistrala-invitations-db-volume:
include:
- path: brokers/docker-compose.yml
env_file: docker/.env
- path: es/docker-compose.yml
env_file: docker/.env
services:
spicedb:
image: "authzed/spicedb:v1.29.0"
@@ -259,6 +252,7 @@ services:
- mqtt-adapter
- http-adapter
- ws-adapter
- coap-adapter
things-db:
image: postgres:16.1-alpine
@@ -292,6 +286,8 @@ services:
depends_on:
- things-db
- users
- auth
- nats
restart: on-failure
environment:
MG_THINGS_LOG_LEVEL: ${MG_THINGS_LOG_LEVEL}
@@ -394,6 +390,8 @@ services:
container_name: magistrala-users
depends_on:
- users-db
- auth
- nats
restart: on-failure
environment:
MG_USERS_LOG_LEVEL: ${MG_USERS_LOG_LEVEL}
@@ -474,7 +472,8 @@ services:
container_name: magistrala-mqtt
depends_on:
- things
- broker
- vernemq
- nats
restart: on-failure
environment:
MG_MQTT_ADAPTER_LOG_LEVEL: ${MG_MQTT_ADAPTER_LOG_LEVEL}
@@ -525,7 +524,7 @@ services:
container_name: magistrala-http
depends_on:
- things
- broker
- nats
restart: on-failure
environment:
MG_HTTP_ADAPTER_LOG_LEVEL: ${MG_HTTP_ADAPTER_LOG_LEVEL}
@@ -570,7 +569,7 @@ services:
container_name: magistrala-coap
depends_on:
- things
- broker
- nats
restart: on-failure
environment:
MG_COAP_ADAPTER_LOG_LEVEL: ${MG_COAP_ADAPTER_LOG_LEVEL}
@@ -620,7 +619,7 @@ services:
container_name: magistrala-ws
depends_on:
- things
- broker
- nats
restart: on-failure
environment:
MG_WS_ADAPTER_LOG_LEVEL: ${MG_WS_ADAPTER_LOG_LEVEL}
@@ -660,6 +659,36 @@ services:
bind:
create_host_path: true
vernemq:
image: magistrala/vernemq:${MG_RELEASE_TAG}
container_name: magistrala-vernemq
restart: on-failure
environment:
DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${MG_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
DOCKER_VERNEMQ_LOG__CONSOLE__LEVEL: ${MG_DOCKER_VERNEMQ_LOG__CONSOLE__LEVEL}
networks:
- magistrala-base-net
volumes:
- magistrala-mqtt-broker-volume:/var/lib/vernemq
nats:
image: nats:2.10.9-alpine
container_name: magistrala-nats
restart: on-failure
command: "--config=/etc/nats/nats.conf"
environment:
- MG_NATS_PORT=${MG_NATS_PORT}
- MG_NATS_HTTP_PORT=${MG_NATS_HTTP_PORT}
- MG_NATS_JETSTREAM_KEY=${MG_NATS_JETSTREAM_KEY}
ports:
- ${MG_NATS_PORT}:${MG_NATS_PORT}
- ${MG_NATS_HTTP_PORT}:${MG_NATS_HTTP_PORT}
volumes:
- magistrala-broker-volume:/data
- ./nats:/etc/nats
networks:
- magistrala-base-net
ui:
image: magistrala/ui:${MG_RELEASE_TAG}
container_name: magistrala-ui
-17
View File
@@ -1,17 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
volumes:
magistrala-es-redis-volume:
services:
es-redis:
image: redis:7.2.4-alpine
container_name: magistrala-es-redis
restart: on-failure
networks:
- magistrala-base-net
volumes:
- magistrala-es-volume:/data
profiles:
- redis
-17
View File
@@ -1,17 +0,0 @@
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = ( g(r.sub, p.sub) && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act) ) || r.sub == 'admin@example.com'