Docker Swarm Sample
Docker swarm sample with NodeJS app on Hyper-V
2 min readApr 7, 2018
Press enter or click to view image in full size![]()
- Clone Sample Repository
git clone https://github.com/wswijaya/docker-swarm-node-app.git2. Build Docker Image and push to Docker Hub
docker build -t /node-app-sample .
docker push /node-app-sample3. Create VMs
docker-machine create -d hyperv — hyperv-virtual-switch “myswitch” myvm3
docker-machine create -d hyperv — hyperv-virtual-switch “myswitch” myvm2
docker-machine create -d hyperv — hyperv-virtual-switch “myswitch” myvm3
docker-machine create -d hyperv — hyperv-virtual-switch “myswitch” myvm44. Create Docker Swarm and set VM1, VM3, and VM4 as manager
docker-machine ssh myvm1 “docker swarm init”
docker-machine ssh myvm1 “docker swarm join-token manager”
docker-machine ssh myvm3 “docker swarm join — token :”
docker-machine ssh myvm4 “docker swarm join — token :”
docker-machine ssh myvm1 “docker swarm join-token worker”
docker-machine ssh myvm2 “docker swarm join — token :”5. Deploy Services
docker-machine scp docker-compose-node-app.yml myvm1:~
docker-machine ssh myvm1 “docker stack deploy -c docker-compose-node-app.yml nodeapplab”
docker-machine ssh myvm1 “docker stack ps nodeapplab”6. Test Site
- Node Web App:
http://:4000orhttp://:4000/api - Docker Visualizer:
http://:9090
7. Remove Services
docker-machine ssh myvm1 “docker stack rm nodeapplab”8. Remove Docker Swarm
docker-machine ssh myvm1 “docker stack rm nodeapplab”
docker-machine ssh myvm2 “docker swarm leave”
docker-machine ssh myvm3 “docker swarm leave — force”
docker-machine ssh myvm4 “docker swarm leave — force”
docker-machine ssh myvm1 “docker swarm leave — force”Optional: Configure Load Balancer using HAProxy
Installation steps for HAProxy on Ubuntu -> How to use HAProxy
Get Wongso Wijaya’s stories in your inbox
Join Medium for free to get updates from this writer.
Sample config file /etc/haproxy/haproxy.cfg
global
daemon
maxconn 200defaults
mode http
timeout connect 5000ms
timeout client 10000ms
timeout server 10000msfrontend http-in
bind *:9090
default_backend serversbackend servers
server vm1 : maxconn 40
server vm3 : maxconn 40
server vm4 : maxconn 40






