feat: deploy microservices via docker compose

This commit is contained in:
leandrofars 2024-03-26 15:40:50 -03:00
parent b51614e5c8
commit 8c7cb6d7e9
13 changed files with 52 additions and 21 deletions

View File

@ -11,7 +11,7 @@ import (
const ( const (
NATS_ACCOUNT_SUBJ_PREFIX = "account-manager.v1." NATS_ACCOUNT_SUBJ_PREFIX = "account-manager.v1."
NATS_REQUEST_TIMEOUT = 5 * time.Second NATS_REQUEST_TIMEOUT = 10 * time.Second
NATS_MQTT_SUBJECT_PREFIX = "mqtt.usp.v1." NATS_MQTT_SUBJECT_PREFIX = "mqtt.usp.v1."
NATS_MQTT_ADAPTER_SUBJECT_PREFIX = "mqtt-adapter.usp.v1." NATS_MQTT_ADAPTER_SUBJECT_PREFIX = "mqtt-adapter.usp.v1."
NATS_ADAPTER_SUBJECT = "adapter.usp.v1." NATS_ADAPTER_SUBJECT = "adapter.usp.v1."

View File

@ -1 +0,0 @@

View File

@ -0,0 +1,2 @@
NATS_URL=nats://msg_broker:4222
MONGO_URI=mongodb://mongo_usp:27017

View File

@ -0,0 +1,2 @@
NATS_URL=nats://msg_broker:4222
MONGO_URI=mongodb://mongo_usp:27017

2
deploy/compose/.env.mqtt Normal file
View File

@ -0,0 +1,2 @@
REDIS_ENABLE=true
REDIS_ADDR=redis_usp:6379

View File

@ -0,0 +1,2 @@
NATS_URL=nats://msg_broker:4222
MQTT_URL=tcp://mqtt:1883

View File

@ -0,0 +1 @@
NATS_URL=nats://msg_broker:4222

View File

@ -0,0 +1,2 @@
NATS_URL=nats://msg_broker:4222
STOMP_SERVER=stomp:61613

View File

@ -0,0 +1,2 @@
NATS_URL=nats://msg_broker:4222
WS_ADDR=ws

View File

@ -1,7 +1,7 @@
services: services:
#/* ----------------------------- Message Broker ----------------------------- */ #/* ----------------------------- Message Broker ----------------------------- */
nats: msg_broker:
image: 'nats:latest' image: 'nats:latest'
container_name: nats container_name: nats
ports: ports:
@ -22,6 +22,8 @@ services:
- 8000:8000 - 8000:8000
depends_on: depends_on:
- mongo_usp - mongo_usp
env_file:
- .env.controller
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.3 ipv4_address: 172.16.235.3
@ -37,6 +39,7 @@ services:
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.4 ipv4_address: 172.16.235.4
profiles: [controller,adapter]
redis: redis:
image: redis image: redis
@ -58,6 +61,8 @@ services:
- 8883:8883 - 8883:8883
depends_on: depends_on:
- redis - redis
env_file:
- .env.mqtt
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.6 ipv4_address: 172.16.235.6
@ -90,6 +95,8 @@ services:
container_name: mqtt-adapter container_name: mqtt-adapter
depends_on: depends_on:
- mqtt - mqtt
env_file:
- .env.mqtt-adapter
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.9 ipv4_address: 172.16.235.9
@ -101,6 +108,8 @@ services:
container_name: ws-adapter container_name: ws-adapter
depends_on: depends_on:
- ws - ws
env_file:
- .env.ws-adapter
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.10 ipv4_address: 172.16.235.10
@ -111,6 +120,8 @@ services:
container_name: stomp-adapter container_name: stomp-adapter
depends_on: depends_on:
- stomp - stomp
env_file:
- .env.stomp-adapter
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.11 ipv4_address: 172.16.235.11
@ -121,6 +132,8 @@ services:
container_name: adapter container_name: adapter
depends_on: depends_on:
- mongo_usp - mongo_usp
env_file:
- .env.adapter
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.12 ipv4_address: 172.16.235.12
@ -129,13 +142,15 @@ services:
#/* ------------- SocketIO Real Time Communication With Frontend ------------- */ #/* ------------- SocketIO Real Time Communication With Frontend ------------- */
socketio: socketio:
image: 'oktopusp/adapter' image: 'oktopusp/socketio'
container_name: socketio container_name: socketio
ports: ports:
- 5000:5000 - 5000:5000
env_file:
- .env.socketio
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.12 ipv4_address: 172.16.235.13
profiles: [frontend] profiles: [frontend]
#/* -------------------------------------------------------------------------- */ #/* -------------------------------------------------------------------------- */
@ -146,13 +161,13 @@ services:
tty: true tty: true
stdin_open: true stdin_open: true
volumes: volumes:
- ../:/app/oktopus - ../../frontend:/app/
command: bash -c "cd /app/oktopus/frontend && npm i && npm run dev" command: bash -c "cd /app/ && npm i && npm run dev"
ports: ports:
- 3000:3000 - 3000:3000
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.13 ipv4_address: 172.16.235.14
profiles: [frontend] profiles: [frontend]
#/* -------------------------------------------------------------------------- */ #/* -------------------------------------------------------------------------- */
@ -163,7 +178,7 @@ services:
- 9443:9443 - 9443:9443
networks: networks:
usp_network: usp_network:
ipv4_address: 172.16.235.14 ipv4_address: 172.16.235.15
profiles: [portainer] profiles: [portainer]
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock

View File

@ -96,7 +96,7 @@ const addDeviceObj = async(obj, setShowLoading, router, updateDeviceParameters)
body: raw body: raw
}; };
setShowLoading(true) setShowLoading(true)
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/add`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/add`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
if (result.status === 401){ if (result.status === 401){
router.push("/auth/login") router.push("/auth/login")
@ -131,7 +131,7 @@ const deleteDeviceObj = async(obj, setShowLoading, router, updateDeviceParameter
body: raw body: raw
}; };
setShowLoading(true) setShowLoading(true)
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/del`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/del`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
if (result.status === 401){ if (result.status === 401){
router.push("/auth/login") router.push("/auth/login")
@ -481,7 +481,7 @@ const getDeviceParameters = async (raw) =>{
body: raw body: raw
}; };
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/parameters`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/parameters`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
if (result.status === 401){ if (result.status === 401){
router.push("/auth/login") router.push("/auth/login")
@ -505,7 +505,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw body: raw
}; };
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/instances`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/instances`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
throw new Error('Please check your email and password'); throw new Error('Please check your email and password');
}else if (result.status === 401){ }else if (result.status === 401){
@ -778,7 +778,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw body: raw
}; };
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/get`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/get`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
if (result.status === 401){ if (result.status === 401){
router.push("/auth/login") router.push("/auth/login")
@ -1028,7 +1028,7 @@ const getDeviceParameterInstances = async (raw) =>{
setOpen(false) setOpen(false)
setShowLoading(true) setShowLoading(true)
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/set`, requestOptions)) let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/set`, requestOptions))
if (result.status != 200) { if (result.status != 200) {
if (result.status === 401){ if (result.status === 401){
router.push("/auth/login") router.push("/auth/login")
@ -1171,7 +1171,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw body: raw
}; };
setShowLoading(true) setShowLoading(true)
let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/operate`, requestOptions) let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/operate`, requestOptions)
let content = await result.json() let content = await result.json()
if (result.status != 200) { if (result.status != 200) {
setShowLoading(false) setShowLoading(false)

View File

@ -84,7 +84,7 @@ const handleOpen = () => {
} }
fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/${method}`, requestOptions) fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/any/${method}`, requestOptions)
.then(response => response.text()) .then(response => response.text())
.then(result => { .then(result => {
if (result.status === 401){ if (result.status === 401){

View File

@ -13,7 +13,11 @@ import {
} from '@mui/material'; } from '@mui/material';
export const OverviewTasksProgress = (props) => { export const OverviewTasksProgress = (props) => {
const { value, sx } = props; var { value, sx } = props;
var valueRaw;
if( value !== undefined) {
valueRaw = value.substring(1);
}
return ( return (
<Card sx={sx}> <Card sx={sx}>
@ -33,7 +37,7 @@ export const OverviewTasksProgress = (props) => {
Conexão MQTT Conexão MQTT
</Typography> </Typography>
<Typography variant="h4"> <Typography variant="h4">
{value}ms {valueRaw}
</Typography> </Typography>
</Stack> </Stack>
<Avatar <Avatar
@ -50,7 +54,7 @@ export const OverviewTasksProgress = (props) => {
</Stack> </Stack>
<Box sx={{ mt: 3 }}> <Box sx={{ mt: 3 }}>
<LinearProgress <LinearProgress
value={value} value={80}
variant="determinate" variant="determinate"
/> />
</Box> </Box>
@ -60,6 +64,6 @@ export const OverviewTasksProgress = (props) => {
}; };
OverviewTasksProgress.propTypes = { OverviewTasksProgress.propTypes = {
value: PropTypes.number.isRequired, value: PropTypes.string.isRequired,
sx: PropTypes.object sx: PropTypes.object
}; };