diff --git a/README.md b/README.md
index aa9dbe7..6d72927 100644
--- a/README.md
+++ b/README.md
@@ -72,7 +72,7 @@ This repository aims to promote the development of a multi-vendor management pla
Run app using Docker:
user@user-laptop:~$ cd oktopus/deploy/compose
-user@user-laptop:~/oktopus/deploy/compose$ docker compose up
+user@user-laptop:~/oktopus/deploy/compose$ COMPOSE_PROFILES=nats,controller,mqtt,stomp,ws,adapter,frontend,portainer docker compose up -d
diff --git a/backend/services/controller/build/Dockerfile b/backend/services/controller/build/Dockerfile
new file mode 100644
index 0000000..e15053a
--- /dev/null
+++ b/backend/services/controller/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o controller cmd/controller/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/controller /
+ENTRYPOINT ["/controller"]
\ No newline at end of file
diff --git a/backend/services/controller/build/Makefile b/backend/services/controller/build/Makefile
new file mode 100644
index 0000000..80cdc95
--- /dev/null
+++ b/backend/services/controller/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= controller
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
\ No newline at end of file
diff --git a/backend/services/mtp/adapter/build/Dockerfile b/backend/services/mtp/adapter/build/Dockerfile
new file mode 100644
index 0000000..8c8be7d
--- /dev/null
+++ b/backend/services/mtp/adapter/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o adapter cmd/adapter/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/adapter /
+ENTRYPOINT ["/adapter"]
\ No newline at end of file
diff --git a/backend/services/mtp/adapter/build/Makefile b/backend/services/mtp/adapter/build/Makefile
new file mode 100644
index 0000000..7f8855d
--- /dev/null
+++ b/backend/services/mtp/adapter/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= adapter
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/mtp/mqtt-adapter/build/Dockerfile b/backend/services/mtp/mqtt-adapter/build/Dockerfile
new file mode 100644
index 0000000..f2a2c02
--- /dev/null
+++ b/backend/services/mtp/mqtt-adapter/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o mqtt-adapter cmd/mqtt-adapter/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/mqtt-adapter /
+ENTRYPOINT ["/mqtt-adapter"]
\ No newline at end of file
diff --git a/backend/services/mtp/mqtt-adapter/build/Makefile b/backend/services/mtp/mqtt-adapter/build/Makefile
new file mode 100644
index 0000000..f7cd384
--- /dev/null
+++ b/backend/services/mtp/mqtt-adapter/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= mqtt-adapter
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/mtp/mqtt/build/Dockerfile b/backend/services/mtp/mqtt/build/Dockerfile
index 187e660..2d59c5e 100644
--- a/backend/services/mtp/mqtt/build/Dockerfile
+++ b/backend/services/mtp/mqtt/build/Dockerfile
@@ -5,5 +5,4 @@ RUN CGO_ENABLED=0 GOOS=linux go build -o mqtt cmd/mqtt/main.go
FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
COPY --from=builder /app/mqtt /
-EXPOSE 1883 8883
ENTRYPOINT ["/mqtt"]
\ No newline at end of file
diff --git a/backend/services/mtp/mqtt/build/Makefile b/backend/services/mtp/mqtt/build/Makefile
index d83ef70..b1dc36d 100644
--- a/backend/services/mtp/mqtt/build/Makefile
+++ b/backend/services/mtp/mqtt/build/Makefile
@@ -1,6 +1,6 @@
.PHONY: help build push start stop release remove delete run logs bash
-DOCKER_USER ?= oktopus
+DOCKER_USER ?= oktopusp
DOCKER_APP ?= mqtt
DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
CONTAINER_SHELL ?= /bin/sh
diff --git a/backend/services/mtp/mqtt/internal/config/config.go b/backend/services/mtp/mqtt/internal/config/config.go
index 7c79b22..157b93b 100644
--- a/backend/services/mtp/mqtt/internal/config/config.go
+++ b/backend/services/mtp/mqtt/internal/config/config.go
@@ -45,8 +45,8 @@ func NewConfig() Config {
fullchain := flag.String("full_chain_path", lookupEnvOrString("FULL_CHAIN_PATH", ""), "path to fullchain.pem certificate")
privkey := flag.String("private_key_path", lookupEnvOrString("PRIVATE_KEY_PATH", ""), "path to privkey.pem certificate")
authFile := flag.String("auth_file_path", lookupEnvOrString("AUTH_FILE_PATH", ""), "path to MQTT RBAC auth file")
- redisEnable := flag.Bool("redis_enable", lookupEnvOrBool("REDIS_ENABLE", false), "enable/disable Redis db")
- redisAddr := flag.String("redis_addr", lookupEnvOrString("REDIS_ADDR", "172.17.0.2:6379"), "address of redis db")
+ redisEnable := flag.Bool("redis_enable", lookupEnvOrBool("REDIS_ENABLE", true), "enable/disable Redis db")
+ redisAddr := flag.String("redis_addr", lookupEnvOrString("REDIS_ADDR", "localhost:6379"), "address of redis db")
redisPassword := flag.String("redis_passwd", lookupEnvOrString("REDIS_PASSWD", ""), "redis db password")
wsEnable := flag.Bool("ws_enable", lookupEnvOrBool("WS_ENABLE", false), "enable/disable Websocket listener")
wsPort := flag.String("ws_port", lookupEnvOrString("WS_PORT", ":80"), "port for Websocket listener")
diff --git a/backend/services/mtp/stomp-adapter/build/Dockerfile b/backend/services/mtp/stomp-adapter/build/Dockerfile
new file mode 100644
index 0000000..883470a
--- /dev/null
+++ b/backend/services/mtp/stomp-adapter/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o stomp-adapter cmd/stomp-adapter/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/stomp-adapter /
+ENTRYPOINT ["/stomp-adapter"]
\ No newline at end of file
diff --git a/backend/services/mtp/stomp-adapter/build/Makefile b/backend/services/mtp/stomp-adapter/build/Makefile
new file mode 100644
index 0000000..d9bbcd2
--- /dev/null
+++ b/backend/services/mtp/stomp-adapter/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= stomp-adapter
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/mtp/stomp/build/Dockerfile b/backend/services/mtp/stomp/build/Dockerfile
new file mode 100644
index 0000000..9ba08f0
--- /dev/null
+++ b/backend/services/mtp/stomp/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o stomp cmd/stomp/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/stomp /
+ENTRYPOINT ["/stomp"]
\ No newline at end of file
diff --git a/backend/services/mtp/stomp/build/Makefile b/backend/services/mtp/stomp/build/Makefile
new file mode 100644
index 0000000..6fc2066
--- /dev/null
+++ b/backend/services/mtp/stomp/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= stomp
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} -p 61613:61613 ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/mtp/ws-adapter/build/Dockerfile b/backend/services/mtp/ws-adapter/build/Dockerfile
new file mode 100644
index 0000000..f467047
--- /dev/null
+++ b/backend/services/mtp/ws-adapter/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o ws-adapter cmd/ws-adapter/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/ws-adapter /
+ENTRYPOINT ["/ws-adapter"]
\ No newline at end of file
diff --git a/backend/services/mtp/ws-adapter/build/Makefile b/backend/services/mtp/ws-adapter/build/Makefile
new file mode 100644
index 0000000..79d6c96
--- /dev/null
+++ b/backend/services/mtp/ws-adapter/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= ws-adapter
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/mtp/ws/build/Dockerfile b/backend/services/mtp/ws/build/Dockerfile
new file mode 100644
index 0000000..64c7d44
--- /dev/null
+++ b/backend/services/mtp/ws/build/Dockerfile
@@ -0,0 +1,8 @@
+FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder
+WORKDIR /app
+COPY ../ .
+RUN CGO_ENABLED=0 GOOS=linux go build -o ws cmd/ws/main.go
+
+FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed
+COPY --from=builder /app/ws /
+ENTRYPOINT ["/ws"]
\ No newline at end of file
diff --git a/backend/services/mtp/ws/build/Makefile b/backend/services/mtp/ws/build/Makefile
new file mode 100644
index 0000000..f78b9b0
--- /dev/null
+++ b/backend/services/mtp/ws/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= ws
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} -p 8080:8080 ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/backend/services/utils/socketio/build/Dockerfile b/backend/services/utils/socketio/build/Dockerfile
new file mode 100644
index 0000000..e89cae8
--- /dev/null
+++ b/backend/services/utils/socketio/build/Dockerfile
@@ -0,0 +1,11 @@
+FROM node:16.20.2-alpine
+
+WORKDIR /app
+
+COPY ../package*.json ./
+
+RUN npm install
+
+COPY ../ .
+
+CMD ["node", "server.js"]
\ No newline at end of file
diff --git a/backend/services/utils/socketio/build/Makefile b/backend/services/utils/socketio/build/Makefile
new file mode 100644
index 0000000..657f527
--- /dev/null
+++ b/backend/services/utils/socketio/build/Makefile
@@ -0,0 +1,61 @@
+.PHONY: help build push start stop release remove delete run logs bash
+
+DOCKER_USER ?= oktopusp
+DOCKER_APP ?= socketio
+DOCKER_TAG ?= $(shell git log --format="%h" -n 1)
+CONTAINER_SHELL ?= /bin/sh
+
+.DEFAULT_GOAL := help
+
+help:
+ @echo "Makefile arguments:"
+ @echo ""
+ @echo "DOCKER_USER - docker user to build image"
+ @echo "DOCKER_APP - docker image name"
+ @echo "DOCKER_TAG - docker image tag"
+ @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'"
+ @echo ""
+ @echo "Makefile commands:"
+ @echo ""
+ @echo "build - docker image build"
+ @echo "push - push docker iamge to registry"
+ @echo "run - create and start docker container with the image"
+ @echo "start - start existent docker container with the image"
+ @echo "stop - stop docker container running the image"
+ @echo "remove - remove docker container running the image"
+ @echo "delete - delete docker image"
+ @echo "logs - show logs of docker container"
+ @echo "bash - access container shell"
+ @echo "release - tag image as latest and push to registry"
+
+build:
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
+
+run:
+ @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} -p 5000:5000${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+stop:
+ @docker stop ${DOCKER_USER}-${DOCKER_APP}
+
+remove: stop
+ @docker rm ${DOCKER_USER}-${DOCKER_APP}
+
+delete:
+ @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+start:
+ @docker start ${DOCKER_USER}-${DOCKER_APP}
+
+push:
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+
+logs:
+ @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
+
+bash:
+ @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+
+release: build
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
diff --git a/deploy/compose/.env b/deploy/compose/.env
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/deploy/compose/.env
@@ -0,0 +1 @@
+
diff --git a/deploy/compose/docker-compose.yaml b/deploy/compose/docker-compose.yaml
index 8ef0e27..0b18b76 100644
--- a/deploy/compose/docker-compose.yaml
+++ b/deploy/compose/docker-compose.yaml
@@ -1,23 +1,6 @@
services:
- controller:
- image: 'golang:1.21.4'
- container_name: controlller
- tty: true
- stdin_open: true
- volumes:
- - ../:/app/oktopus
- command: bash -c "cd /app/oktopus/backend/services/controller && go run cmd/oktopus/main.go -mongo mongodb://172.16.235.2:27017 -a 172.16.235.4 -p 1883 -ws_addr 172.16.235.8"
- ports:
- - 8000:8000
- depends_on:
- - mongodb
- - mqtt
- - websockets
- networks:
- usp_network:
- ipv4_address: 172.16.235.7
-
+#/* ----------------------------- Message Broker ----------------------------- */
nats:
image: 'nats:latest'
container_name: nats
@@ -25,68 +8,138 @@ services:
- 4222:4222
- 8222:8222
command: -n oktopus -m 8222 -js
- networks:
- usp_network:
- ipv4_address: 172.16.235.9
-
- mongodb:
- image: mongo
- container_name: mongodb_usp
networks:
usp_network:
ipv4_address: 172.16.235.2
+ profiles: [nats]
+#/* -------------------------------------------------------------------------- */
- redis:
- image: redis
- container_name: redis_usp
+#/* ------------------------ API REST / USP Controller ----------------------- */
+ controller:
+ image: 'oktopusp/controller'
+ container_name: controlller
+ ports:
+ - 8000:8000
+ depends_on:
+ - mongo_usp
networks:
usp_network:
ipv4_address: 172.16.235.3
+ profiles: [controller]
+#/* -------------------------------------------------------------------------- */
- mqtt:
- image: 'golang:1.21.4'
- container_name: mqtt
- tty: true
- stdin_open: true
- volumes:
- - ../:/app/oktopus
- command: bash -c "cd /app/oktopus/backend/services/mqtt/cmd/ && go run main.go -redis 'redis:6379' -info :8081"
+#/* ---------------------------- Databases / Cache --------------------------- */
+ mongo_usp:
+ image: mongo
+ container_name: mongo_usp
ports:
- - 1883:1883
- depends_on:
- - redis
+ - 27017:27017
networks:
usp_network:
ipv4_address: 172.16.235.4
- websockets:
- image: 'golang:1.21.6'
+ redis:
+ image: redis
+ container_name: redis_usp
+ ports:
+ - 6379:6379
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.5
+ profiles: [mqtt]
+#/* -------------------------------------------------------------------------- */
+
+#/* ----------------------- Message Transfer Protocols ----------------------- */
+ mqtt:
+ image: 'oktopusp/mqtt'
+ container_name: mqtt
+ ports:
+ - 1883:1883
+ - 8883:8883
+ depends_on:
+ - redis
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.6
+ profiles: [mqtt]
+
+ ws:
+ image: 'oktopusp/ws'
container_name: websockets
- tty: true
- stdin_open: true
- volumes:
- - ../:/app/oktopus
- command: bash -c "cd /app/oktopus/backend/services/ws/ && go run cmd/main.go"
ports:
- 8080:8080
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.7
+ profiles: [ws]
+
+ stomp:
+ image: 'oktopusp/stomp'
+ container_name: stomp
+ ports:
+ - 61613:61613
networks:
usp_network:
ipv4_address: 172.16.235.8
+ profiles: [stomp]
+#/* -------------------------------------------------------------------------- */
+#/* --------------- Message transfer Protocols Adapters to NATS -------------- */
+ mqtt-adapter:
+ image: 'oktopusp/mqtt-adapter'
+ container_name: mqtt-adapter
+ depends_on:
+ - mqtt
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.9
+ profiles: [mqtt]
+
+
+ ws-adapter:
+ image: 'oktopusp/ws-adapter'
+ container_name: ws-adapter
+ depends_on:
+ - ws
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.10
+ profiles: [ws]
+
+ stomp-adapter:
+ image: 'oktopusp/stomp-adapter'
+ container_name: stomp-adapter
+ depends_on:
+ - stomp
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.11
+ profiles: [stomp]
+
+ adapter:
+ image: 'oktopusp/adapter'
+ container_name: adapter
+ depends_on:
+ - mongo_usp
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.12
+ profiles: [adapter]
+#/* -------------------------------------------------------------------------- */
+
+#/* ------------- SocketIO Real Time Communication With Frontend ------------- */
socketio:
- image: 'node:16.20.2'
+ image: 'oktopusp/adapter'
container_name: socketio
- tty: true
- stdin_open: true
- volumes:
- - ../:/app/oktopus
- command: bash -c "cd /app/oktopus/backend/services/socketio/ && npm i && node server.js"
ports:
- 5000:5000
networks:
usp_network:
- ipv4_address: 172.16.235.5
+ ipv4_address: 172.16.235.12
+ profiles: [frontend]
+#/* -------------------------------------------------------------------------- */
+#/* -------------------------------- Frontend -------------------------------- */
frontend:
image: 'node:16.20.2'
container_name: frontend
@@ -99,7 +152,21 @@ services:
- 3000:3000
networks:
usp_network:
- ipv4_address: 172.16.235.6
+ ipv4_address: 172.16.235.13
+ profiles: [frontend]
+#/* -------------------------------------------------------------------------- */
+
+ portainer:
+ image: portainer/portainer-ce:latest
+ container_name: portainer
+ ports:
+ - 9443:9443
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.14
+ profiles: [portainer]
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
networks:
usp_network: