Skip to content

Instantly share code, notes, and snippets.

@mik-laj
Created December 22, 2018 00:45
Show Gist options
  • Save mik-laj/5aeeaa5e44bb0098ee714a6671e3a358 to your computer and use it in GitHub Desktop.
Save mik-laj/5aeeaa5e44bb0098ee714a6671e3a358 to your computer and use it in GitHub Desktop.
Setup Docker Swarm Cluser
version: "3"
services:
visualizer:
image: dockersamples/visualizer:stable
ports:
- 8080:8080
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
whoami:
image: jwilder/whoami
deploy:
replicas: 30
ports:
- "8000:8000"
#!/bin/bash
# Only once to setup Google Cloud Project and local env
# gcloud projects create "${GCP_PROJECT_ID}"
# gcloud auth application-default login
# gcloud services enable compute.googleapis.com
# gcloud services enable cloudbilling.googleapis.com
# GCP_BILLING_ACCOUNT=`gcloud alpha billing accounts list --format=json| jq '.[0].name' -r`
# gcloud alpha billing projects link ${GCP_PROJECT_ID} --billing-account=${BILLING_ACCOUNT}
GCP_PROJECT_ID=docker-experiments-2018-12
GCP_REGION_ID=europe-west3
GCP_ZONE_ID=europe-west3-a
gcloud config set project "${GCP_PROJECT_ID}"
gcloud compute project-info add-metadata \
--metadata google-compute-default-region=${GCP_REGION_ID}
gcloud compute project-info add-metadata \
--metadata google-compute-default-zone=${GCP_ZONE_ID}
GCP_IMAGE_URL=`gcloud compute images list --uri | grep ubuntu-1804`
docker-machine create \
--driver google \
--google-project ${GCP_PROJECT_ID} \
--google-machine-type n1-standard-1 \
--google-machine-image "${GCP_IMAGE_URL}" \
--google-zone ${GCP_ZONE_ID} \
--google-tags docker \
swarm-manager-1
for m in swarm-worker-{1,2,3,4,5}; do
docker-machine create \
--driver google \
--google-project ${GCP_PROJECT_ID} \
--google-machine-type f1-micro \
--google-machine-image "${GCP_IMAGE_URL}" \
--google-zone ${GCP_ZONE_ID} \
--google-tags docker \
$m
done
MANAGER_IP=`gcloud compute instances describe \
--project ${GCP_PROJECT_ID} \
--zone ${GCP_ZONE_ID} \
--format 'value(networkInterfaces[0].networkIP)' \
swarm-manager-1`
echo "Manager IP is: ${MANAGER_IP}"
docker-machine ssh swarm-manager-1 \
sudo docker swarm init --advertise-addr ${MANAGER_IP}
WORKER_TOKEN=`docker-machine ssh swarm-manager-1 \
sudo docker swarm join-token worker | grep token | awk '{ print $5 }'`
for m in swarm-worker-{1,2,3,4,5}; do
docker-machine ssh $m \
sudo docker swarm join --token $WORKER_TOKEN ${MANAGER_IP}:2377
done
gcloud compute firewall-rules create docker-public-ports \
--project=${GCP_PROJECT_ID} \
--description="Allow Docker Stack Sample App Ports" \
--direction=INGRESS \
--priority=1000 \
--network=default \
--action=ALLOW \
--rules=tcp:80,tcp:8080,tcp:3000,tcp:8000 \
--target-tags=docker
#!/bin/bash
# Aktywuje, aby lokalny docker używał zdalnego deamona dockera
eval "$(docker-machine env swarm-manager-1)"
# Deploy
docker stack deploy -c docker-compose.yml sample-app
# Lista aplikacji
docker stack ls
# Lista procesow w aplikacji
docker stack ps sample-app
# Lista maszyn
docker-machine ls
# Lista maszyn - same nazwy
docker-machine ls --format '{{ .Name }}'
# Kasowanie maszyn
docker-machine rm $(docker-machine ls --format '{{.Name}}')
# Resetowanie
gcloud compute instances list --format="value(name)" | xargs gcloud compute instances reset --zone europe-west3-a
# Resetowanie workerów
gcloud compute instances list --format="value(name)" | grep worker | xargs gcloud compute instances reset --zone europe-west3-a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment