mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 07:30:25 +00:00
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:
@@ -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) & \
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
Reference in New Issue
Block a user