Complete Steps to deploy application using docker swarm on digitalocean

Sunil More
Aug 31, 2018 · 3 min read

Firstly, you should have active account on digitalocean . If you’re new user then use below link to register on digitalocean

Register on digitalocean

1. Create Access token on Digital Ocean

Refer below link to create Digital Ocean Access Token
https://www.digitalocean.com/docs/api/create-personal-access-token/

2.Create swarm manager

Make sure in local machine you’ve already installed docker

Run following command on your local machine to create droplet on digitalocean

$ docker-machine create — driver digitalocean — digitalocean-access-token <DIGITAL_OCEAN_ACCESS_TOKEN> docker-swarm-manager

Run following create to Public IP of docker-swarm-manager

$ docker-machine ip docker-swarm-manager

Create swarm cluster on docker-swarm-manager

//ssh to digitalocean docker-swarm-manager
$ docker-machine ssh docker-swarm-manager

$ docker swarm init — advertise-addr <public IP of digitalocean droplet>

After running above command in output you’ll get token like this

docker swarm join — token <SWARM MANAGER TOKEN> <public IP of digitalocean droplet>:2377

To create droplet with different configuration refer following link

https://www.digitalocean.com/community/tutorials/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-ubuntu-16-04

3. Create multiple swarm nodes

Create following shell script file

File: setup-swarm-node.sh

for i in `seq 1 $1`
do
docker-machine create — driver digitalocean \
— digitalocean-image ubuntu-16–04-x64 \
— digitalocean-access-token <DIGITAL_OCEAN_ACCESS_TOKEN> swarm-node-$i;
done

Run below command to setup n noof cluster

$ sh setup-swarm-node.sh 3

4. Join these node to swarm manager

Follow same step for all swarm nodes

— Login to swarm node
$ docker-machine ssh swarm-node-1

— Run below command to join swarm manager

$ docker swarm join — token <SWARM MANAGER TOKEN> <public IP Address of docker-swarm-manager>:2377

5. Check all nodes joined to swarm manager

Login to swarm-manager-node
$ docker-machine ssh swarm-manager-node
— Type below command to see all nodes , in my case I’ve created only 2 swarm nodes
$ docker node ls

Output look like this:

root@docker-swarm-manager:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
0z0egd5d9c7mem4gqw0f1nw7s * docker-swarm-manager Ready Active Leader 18.06.1-ce
lyrdfv0vw8wtyhxcflonozza2 swarm-node-1 Ready Active 18.06.1-ce
v4bobr3t688ueaheyg6omnhxo swarm-node-2 Ready Active 18.06.1-ce
uhxc5i0ju8sc2a0a7dj9hu8hu swarm-node-3 Ready Active 18.06.1-ce

6. Setup some sample apps using docker service

Login into docker-swarm-managaer
$ docker-machine ssh docker-swarm-manager

I’ll use following image which I’ve created using node(expressjs)

1. sunilmore690/express-app >> app1
2. sunilmore690/express-app-2 >> app2

Deploying this images using docker service

$ docker service create --name app1 --publish 8080:3000 --replicas=4 sunilmore690/express-app

$ docker service create --name app2 --replicas=4 8081:3000 sunilmore690/express-app-2

Now hit the following URL in browser

http://<Public IP of Docker Swarm Manager>:8080 > app1
http://
<Public IP of Docker Swarm Manager>:8081 > app2

To see list of docker services
$ docker service ls

7. Setup GUI to manage for docker swarm

There are better option available to manager docker
Ref: https://www.upnxtblog.com/index.php/2018/01/17/top-6-gui-tools-for-managing-docker-environments/

But Personally I like portainer
Ref:
https://portainer.io/install.html
Login to swarm manager
> docker-machine ssh docker-swarm-manager

MANAGE A SWARM CLUSTER WITH PORTAINER

$ docker volume create portainer_data
$ docker service create \
 — name portainer \
 — publish 9000:9000 \
 — replicas=1 \
 — constraint ‘node.role == manager’ \
 — mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
 — mount type=volume,src=portainer_data,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock

Now hit the http://<Digital Ocean PUblic IP>:9000

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade