Created
July 3, 2017 22:46
-
-
Save jamiejackson/df318fb656115f2e72f819f7f50c9d1a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# https://codefresh.io/blog/deploy-docker-compose-v3-swarm-mode-cluster/ | |
# vars | |
[ -z "$NUM_WORKERS" ] && NUM_WORKERS=3 | |
# init swarm (need for service command); if not created | |
docker node ls 2> /dev/null | grep "Leader" | |
if [ $? -ne 0 ]; then | |
if [ "$(hostname -i)" = "127.0.0.1" ]; then | |
# vagrant environment | |
docker swarm init --advertise-addr=192.168.56.10 | |
else | |
docker swarm init | |
fi | |
fi | |
# get join token | |
SWARM_TOKEN=$(docker swarm join-token -q worker) | |
# get Swarm master IP (Docker for Mac xhyve VM IP) | |
SWARM_MASTER=$(docker info --format "{{.Swarm.NodeAddr}}") | |
echo "Swarm master IP: ${SWARM_MASTER}" | |
sleep 10 | |
# start Docker registry mirror | |
docker run -d --restart=always -p 4000:5000 --name v2_mirror \ | |
-v $PWD/rdata:/var/lib/registry \ | |
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ | |
registry:2.5 | |
# run NUM_WORKERS workers with SWARM_TOKEN | |
for i in $(seq "${NUM_WORKERS}"); do | |
# remove node from cluster if exists | |
docker node rm --force $(docker node ls --filter "name=worker-${i}" -q) > /dev/null 2>&1 | |
# remove worker contianer with same name if exists | |
docker rm --force $(docker ps -q --filter "name=worker-${i}") > /dev/null 2>&1 | |
# run new worker container | |
docker run -d --privileged --name worker-${i} --hostname=worker-${i} \ | |
-p ${i}2375:2375 \ | |
-p ${i}5000:5000 \ | |
-p ${i}5001:5001 \ | |
-p ${i}5601:5601 \ | |
-p ${i}3306:3306 \ | |
-p ${i}3307:3307 \ | |
-p ${i}3308:3308 \ | |
-p ${i}7946:7946 \ | |
-p ${i}7946:7946/udp \ | |
-p ${i}4789:4789/udp \ | |
docker:stable-dind --registry-mirror http://${SWARM_MASTER}:4000 | |
sleep 1 | |
# add worker container to the cluster | |
docker --host=localhost:${i}2375 swarm join --token ${SWARM_TOKEN} ${SWARM_MASTER}:2377 | |
done | |
# show swarm cluster | |
printf "\nLocal Swarm Cluster\n===================\n" | |
docker node ls | |
# echo swarm visualizer | |
printf "\nLocal Swarm Visualizer\n===================\n" | |
docker run --rm -it -d --name swarm_visualizer \ | |
-p 8081:8080 -e HOST=localhost \ | |
-v /var/run/docker.sock:/var/run/docker.sock \ | |
dockersamples/visualizer |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
services: | |
master: | |
image: jamiejackson/mariadb-replication:10.2 | |
ports: | |
- "3307:3306" | |
restart: unless-stopped | |
environment: | |
- MYSQL_ALLOW_EMPTY_PASSWORD=1 | |
# - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} | |
slave: | |
image: jamiejackson/mariadb-replication:10.2 | |
depends_on: | |
- "master" | |
ports: | |
- "3308:3306" | |
restart: unless-stopped | |
environment: | |
- MYSQL_ALLOW_EMPTY_PASSWORD=1 | |
- MASTER_HOST=master | |
- MASTER_PORT=3306 | |
# - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
docker stack deploy --compose-file=docker-compose.swarm.yml db |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment