Last active
March 20, 2018 21:32
-
-
Save ATLJLawrie/9bd214355f77ebf25b9340497072b94e to your computer and use it in GitHub Desktop.
Build local swarm cluster with viz, portainer, traefik and then setup DNS resolution
This file contains hidden or 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
echo "Removing nodes 1-3" | |
docker-machine rm node-1 node-2 node-3 | |
# use the below command with the appropriate virtualbox network if having issues | |
# sudo ifconfig vboxnet0 down && sudo ifconfig vboxnet0 up |
This file contains hidden or 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
#!/usr/bin/env bash | |
set -e | |
for i in 1 2 3; do | |
docker-machine create \ | |
-d virtualbox \ | |
-engine-insecure-registry 192.168.99.1:5000 \ | |
node-$i | |
done | |
eval $(docker-machine env node-1) | |
docker swarm init \ | |
--advertise-addr $(docker-machine ip node-1) \ | |
--listen-addr $(docker-machine ip node-1):2377 | |
#MANAGER_TOKEN=$(docker swarm join-token -q manager) | |
#for i in 2 3; do | |
# eval $(docker-machine env node-$i) | |
# | |
# docker swarm join --token $MANAGER_TOKEN $(docker-machine ip node-1):2377 | |
#done | |
WORKER_TOKEN=$(docker swarm join-token -q worker) | |
for i in 2 3; do | |
eval $(docker-machine env node-$i) | |
docker swarm join --token $WORKER_TOKEN $(docker-machine ip node-1):2377 | |
done | |
echo "" | |
echo "Starting Docker Swarm Visualizer via node-1" | |
docker-machine ssh node-1 "docker service create \ | |
--name viz \ | |
--publish 9001:8080/tcp \ | |
--constraint=node.role==manager \ | |
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ | |
dockersamples/visualizer" | |
echo "" | |
echo ">> The Swarm Cluster is set up!" | |
echo ">> run - eval $(docker-machine env node-1)" |
This file contains hidden or 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
echo "Starting Portainer via node-1" | |
docker-machine ssh node-1 "docker service create \ | |
--name portainer \ | |
--publish 9000:9000 \ | |
--constraint 'node.role == manager' \ | |
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \ | |
--detach=false \ | |
portainer/portainer \ | |
-H unix:///var/run/docker.sock \ | |
--no-auth" | |
echo "" |
This file contains hidden or 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
#!/usr/bin/env bash | |
echo "Starting Traefik via docker stack deploy" | |
eval $(docker-machine env node-1) | |
docker stack deploy --compose-file traefik-docker-compose.yml traefik | |
This file contains hidden or 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
#!/usr/bin/env bash | |
echo "Starting Local Registry - 192.168.99.1 on port 5000" | |
if [ ! "$(docker ps -q -f name=registry)" ]; then | |
if [ "$(docker ps -aq -f status=exited -f name=registry)" ]; then | |
# cleanup | |
docker rm registry | |
fi | |
# run your container | |
docker run -d \ | |
-p 5000:5000 \ | |
--restart=always \ | |
--name registry \ | |
-v ~/docker_registry_volume:/var/lib/registry \ | |
registry:2 | |
echo "Container started" | |
else | |
echo "Container already running" | |
fi | |
echo "Make sure to tag and push images to 192.168.99.1:5000" |
This file contains hidden or 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 | |
echo "Updating brew" | |
brew update | |
echo "Installing dnsmasq via brew" | |
brew install dnsmasq | |
echo "appending swarm.primerev.com and swarm.primerevenue.com to /usr/local/etc/dnsmasq.conf" | |
sed -i '' '/swarm.primerev.com/d' /usr/local/etc/dnsmasq.conf | |
sed -i '' '/swarm.primerevenue.com/d' /usr/local/etc/dnsmasq.conf | |
cat <<EOF >> /usr/local/etc/dnsmasq.conf | |
address=/swarm.primerev.com/$(docker-machine ip node-1) | |
address=/swarm.primerevenue.com/$(docker-machine ip node-1) | |
EOF | |
echo "please enter sudo password at prompts" | |
sudo mkdir /etc/resolver/ | |
sudo tee /etc/resolver/swarm.primerev.com >/dev/null <<EOF | |
nameserver 127.0.0.1 | |
EOF | |
sudo tee /etc/resolver/swarm.primerevenue.com >/dev/null <<EOF | |
nameserver 127.0.0.1 | |
EOF | |
echo "To have launchd start dnsmasq now and restart at startup: | |
sudo brew services start dnsmasq" |
This file contains hidden or 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" | |
networks: | |
proxy: | |
driver: overlay | |
services: | |
traefik: | |
image: traefik:v1.3.1 | |
networks: | |
- proxy | |
ports: | |
- 8080:8080 | |
- 80:80 | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
command: --docker --docker.swarmmode --docker.domain=swarm.local --docker.watch --web | |
deploy: | |
mode: global | |
placement: | |
constraints: | |
- node.role == manager |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment