Project developed as part of the Module Cloud Computing, offered by HAW.
The project consists of a leaf-let application (Interactive map Library) that retrieves information from multiple MySQL databases. A load balancer is used for distributing requests to differents APIs. Docker is used on all services separatedly.
Create a bridge with sudo docker network create leaflet_bridge
.
To run LeafLet, first access it's folder
cd docker-leaflet
and build the docker image sudo docker build -t leaflet
. Then run the newly created image with
sudo docker run --rm -p $PORTLEAFLET:3333 --network leaflet_bridge --name leaflet leaflet
where PORTLEAFLET refers to the adress you'll be using to load the Map (localhost:PORTLEAFLET).
Next let's set the MySQL instance. First acess cd docker-mysql
and edit the docker-compose.yml
file with the desired connection credentials. Finally run docker compose up
. Populate the DB as needed.
Now let's set the Shipments API (for MySQL) for communicating with the DB. Go to cd docker-shipmentsapi_mysql
and edit the file located at app/api/databaseConfig.js
with the appropriate login credentials (According the MySQL DB). Next do sudo docker build -t shipmentsapi_mysql .
to create the image, and then docker run --restart on-failure -p $APIPORT:3000 -d --network leaflet_bridge --name shipmentsapi_mysql shipmentsapi_mysql
to start the container.
To handle multiple connections from LeafLet, let's configure a Load Balancer. Go to cd docker-loadbalancer
and execute sudo docker build -t loadbalancer .
followed by docker run --rm -p $LOADBALANCERPORT:8080 -e 'SERVERS=localhost:$APIPORT' -e 'LB_STRATEGY=LEAST' --name loadbalancer loadbalancer
to start the container.
We can now create multiple instances of MySQL/ShipmentsAPI and simply provide it's adress and port to the Load Balancer, separated by simple space.