Node.js Microservices in Containers with ContainerPilot
Example microservices implementation using Node.js and Docker. Below is an architectural diagram depicting the composition of services that make up the project. When everything is working a frontend web application is accessible that will display a set of graphs using sensor data. The sensor data is either generated by the smartthings microservice or is sent to the microservice from a SmartThings hub running a Sensor SmartApp.
Usage
Development
In local development you can start the microservices by running
$ docker-compose -f local-compose.yml up -d
Then scale up the frontend by a number of instances (3 in this case):
$ docker-compose -f local-compose.yml scale frontend=3
Navigate to http://localhost
in your browser and you will see 3 charts. As data flows into the serializer from the various sensors you will start to see data appear on the charts in real-time.
To check that all of the local containers are running you can execute the ps
command by running
$ docker-compose -f local-compose.yml ps
Production
When deploying to Triton, first setup your environment then run docker-compose. Below is an example of setting your environment variables then pushing the code to production.
$ ./setup.sh
$ eval "$(triton env)"
$ docker-compose up -d
$ triton instance get nodejsexample_traefik_1
Credits
This project is inspired by various microservices workshops and trainings. In no particular order, they are:
- https://github.com/lloydbenson/microservices-workshop - Lloyd Benson
- https://github.com/nearform/micro-services-tutorial-iot - nearForm