Broker
Database
Logger
Controller
NodeJS
NodeJS
HiveMQ
MySql
infamous
GLOBAL PROXY
HTTP Server
Website
Golang
Nginx
React.js
4 Container
2 Container
version: "3.1"
services:
alarmy-broker:
container_name: alarmy-broker
image: alarmy-broker:latest
build: ./broker
expose:
- 1883
- 8000
- 8080
ports:
- 1883:1883
- 8000:8000
networks:
- docker-network
alarmy-db:
container_name: alarmy-db
image: alarmy-db:latest
build: ./db
expose:
- 3306
ports:
- 3306:3306
networks:
- docker-network
alarmy-logger:
container_name: alarmy-logger
image: alarmy-logger:latest
build: ./logger
restart: always
expose:
- 1883
- 3306
networks:
- docker-network
alarmy-controller:
container_name: alarmy-controller
image: alarmy-controller:latest
build: ./controller
restart: always
ports:
- 3000:3000
- 8082:8082
expose:
- 1883
networks:
- docker-network
networks:
docker-network:
driver: bridge
version: "3.1"
services:
alarmy-globproxy:
container_name: alarmy-globproxy
image: alarmy-globproxy:latest
build: ./globproxy
ports:
- 8082:8082
networks:
- docker-network
alarmy-web:
container_name: alarmy-web
image: alarmy-web:latest
build: ./web
ports:
- "80:80"
- "443:443"
# volumes:
# - ./production.conf:/etc/nginx/conf.d/default.conf
# - /docker-volumes/etc/letsencrypt/live/shorty.codes/fullchain.pem:/etc/letsencrypt/live/shorty.codes/fullchain.pem
# - /docker-volumes/etc/letsencrypt/live/shorty.codes/privkey.pem:/etc/letsencrypt/live/shorty.codes/privkey.pem
networks:
- docker-network
networks:
docker-network:
driver: bridge
FROM java:8-jdk
RUN apt-get install -y wget unzip &&\
wget --content-disposition http://www.hivemq.com/download.php?token=9468da1a04b017984af053ffc166dbf5 &&\
unzip hivemq-*.zip -d /opt/ &&\
rm hivemq-*.zip &&\
mv /opt/hivemq-* /opt/hivemq
WORKDIR /opt/hivemq
ENV HIVEMQ_HOME /opt/hivemq
COPY config.xml /opt/hivemq/conf/config.xml
# Expose MQTT port
EXPOSE 1883
# Expose MQTT over Websocket port
EXPOSE 8000
# Expose webinterface
EXPOSE 8080
CMD /opt/hivemq/bin/run.shFROM node:carbon
WORKDIR /opt/alarmy/controller
COPY . .
RUN npm install
# For mqtt
EXPOSE 1883
# For local secret swap
EXPOSE 3000
# For global proxy
EXPOSE 8082
CMD npm start
FROM mysql:5.5
ENV MYSQL_ROOT_PASSWORD=Rh1NMO8AfmWaDiM0QnS6dyKZClA5YxNp
ENV MYSQL_DATABASE=alarmy
ENV MYSQL_USER=nodelogger
ENV MYSQL_PASSWORD=nodelogger.password
EXPOSE 3306FROM node:carbon
WORKDIR /opt/alarmy/logger
COPY . .
RUN npm install &&\
npm run-script build
# For database
EXPOSE 3306
# For mqtt
EXPOSE 1883
CMD npm start
FROM golang:latest as builder
WORKDIR /opt/alarmy/globproxy
COPY ./main.go ./main.go
RUN go get github.com/gorilla/websocket &&\
GOOS=linux GOARCH=amd64 go build -a -o globproxy &&\
chown 777 ./globproxy
EXPOSE 8082
CMD ./globproxy "0.0.0.0:8082"FROM node:carbon as build
WORKDIR /opt/alarmy/web
COPY . .
RUN npm install &&\
npm run build
FROM nginx:latest
WORKDIR /opt/alarmy/web
COPY --from=build /opt/alarmy/web/build /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
# RUN apt-get update && apt-get install openssl &&\
# mkdir dh-param &&\
# openssl dhparam -out ./dh-param/dhparam-4096.pem 4096
EXPOSE 80
EXPOSE 443