Swarm Cluster
A quick summary of Swarm Cluster
SWARM Cluster Setup and Deploy
Initalization
sudo docker swarm init --advertise-addr VM_IP_ADDRESS
Run with Docker-Compose configuration and .env file
sudo env $(sudo cat .env | grep ^[A-Z] | xargs) docker stack deploy --with-registry-auth --compose-file docker-compose.yml project_name
Networks
Use only overlay network to run in cluster mode. If exact network is defined in docker-compose file, like bridge network, it should be created as follows. Skip if overlay is used.
sudo docker network create \
--subnet 10.10.1.0/24 \
--gateway 10.10.1.1 \
-o com.docker.network.bridge.enable_icc=false \
-o com.docker.network.bridge.name=docker_gwbridge \
docker_gwbridge
Publish/Expose cluster ports
docker service update \
--publish-add published=80,target=3000 \
project_name_backend
Scale Backend service for Zero-Downtime deployments
docker service scale project_name_backend=2
Set HealthCheck to verify Backend is up and running
Check curl is installed in the Backend image. Also check the backend port.
docker service update --health-cmd='curl -sS 127.0.0.1:3000 || exit 1' project_name_backend
Set Rolling Update parameters
docker service update --update-parallelism 1 --update-delay 15s --update-order start-first project_name_backend
Perform Rolling Update
docker service update --force --image hub.shakuro.com/template/backend:20190514135602 project_name_backend
Change service startup command
docker service update --args "bash -c 'nginx && NODE_ENV=production PORT=4200 node dist/server'" project_name_backend