Skip to content

Instantly share code, notes, and snippets.

@hieulm
Last active December 30, 2019 01:37
Show Gist options
  • Save hieulm/d735a4217a367cbbf17c88a7eb1110c7 to your computer and use it in GitHub Desktop.
Save hieulm/d735a4217a367cbbf17c88a7eb1110c7 to your computer and use it in GitHub Desktop.
docker swarm instruction

Commands

References

Setup server

curl https://raw.githubusercontent.com/wklken/vim-for-server/master/vimrc > ~/.vimrc
apt-get install nfs-common
# install netshare
wget https://github.com/ContainX/docker-volume-netshare/releases/download/v0.36/docker-volume-netshare_0.36_amd64.deb
dpkg -i docker-volume-netshare_0.36_amd64.deb
service docker-volume-netshare start

Manager nodes

# Manager nodes
docker swarm init --advertise-addr=10.130.8.86
# show join-token
docker swarm join-token manager
docker swarm join-token worker
docker node ls

# deloy service 
docker service create --replicas 1 --name helloworld alpine ping docker.com
docker service remove helloworld
# Update services with latest image
docker service update --image registry.gitlab.com/nginx $SERVICE_NAME
docker service update --image kong:latest $SERVICE_NAME
# Update service when config change

# Restart kong
docker service update dev_kong-gw --args "kong restart"

Worker nodes

docker swarm join --token SWMTKN-1-4brkd51qcudi543dpgb0rhc7bhfogkkacw2n5374fc0wxhuaf2-68a79g11qbrtgztkvj58fep4w 10.130.8.86:2377
docker swarm leave

Working with docker stack

cd $WORKING_DIR
export STACK_NAME=dev
docker stack deploy $STACK_NAME -c stack.yml --with-registry-auth

Troubleshoting

docker service ps --no-trunc $SERVICE_NAME
docker service logs $SERVICE_NAME
#!/bin/bash
apt update
apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
apt update
apt-cache policy docker-ce
apt install -y docker-ce
_format_version: "1.1"
services:
- name: todo-service
url: https://jsonplaceholder.typicode.com/todos
routes:
- name: todo-route
paths:
- /todos
#!/bin/sh
cores=$(grep -c ^processor /proc/cpuinfo 2>/dev/null)
[ "$cores" -eq "0" ] && cores=1
threshold="${cores:-1}.0"
if [ $(echo "`cut -f1 -d ' ' /proc/loadavg` < $threshold" | bc) -eq 1 ]; then
echo
echo -n " System information as of "
/bin/date
echo
/usr/bin/landscape-sysinfo
else
echo
echo " System information disabled due to load higher than $threshold"
fi
#!/bin/bash
STACK=dev
SERVICE=kong-gw
CONFIG=kong.yml
CONFIG_UUID=$(uuidgen)
CONFIG_PATH=./kong.yml
NEW_CONFIG=$STACK_$CONFIG_$CONFIG_UUID $CONFIG_PATH
docker config create $NEW_CONFIG
docker service update --config-rm kong.yml --config-add source=$NEW_CONFIG,target=/kong.yml,mode=0440 $STACK_$SERVICE
version: "3.3"
services:
kong-gw:
image: kong:latest
environment:
# - KONG_DECLARATIVE_CONFIG=/opt/kong.yml
# - KONG_DATABASE=off
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-db
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl
#configs:
#- kong.yml
ports:
- 8000:8000
- 8443:8443
- 8001:8001
- 8444:8444
volumes:
#- kong_config/kong.yml:/usr/local/kong/declarative/kong.yml
- kong_config:/opt
depends_on:
- kong-db
- kong-migration
kong-migration:
image: kong:latest
command: kong migrations bootstrap
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-db
depends_on:
- kong-db
kong-db:
image: postgres:9.6
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
volumes:
- kong_db_vol:/var/lib/postgresql/data
deploy:
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
configs:
kong.yml:
file: ./kong.yml
volumes:
kong_config:
driver: nfs
driver_opts:
share: 10.130.225.61:/kong
kong_db_vol:
driver: nfs
driver_opts:
share: 10.130.225.61/kong_db
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment