From 3d7ebfa1dd568b58d2392a87d9cba98ee92e0a14 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <p.jentsch@uni-bielefeld.de>
Date: Tue, 26 Nov 2019 11:39:27 +0100
Subject: [PATCH] Enhancements

---
 setup_dind_swarm.sh => dind_swarm_setup.sh | 25 +++++-----
 docker_stack_deploy.yml                    | 56 ++++++++++++++++++++++
 2 files changed, 67 insertions(+), 14 deletions(-)
 rename setup_dind_swarm.sh => dind_swarm_setup.sh (65%)
 create mode 100644 docker_stack_deploy.yml

diff --git a/setup_dind_swarm.sh b/dind_swarm_setup.sh
similarity index 65%
rename from setup_dind_swarm.sh
rename to dind_swarm_setup.sh
index 645accdc..f8f75943 100755
--- a/setup_dind_swarm.sh
+++ b/dind_swarm_setup.sh
@@ -3,32 +3,29 @@
 OPAQUE_STORAGE_MOUNT_DIRECTORY="/mnt/opaque" # Don't change this variable, unless you know what you are doing!
 SWARM_MANAGER_IP=""
 SWARM_WORKER_NUMBER=4
-SWARM_WORKER_TOKEN=""
 
 if [ -z ${SWARM_MANAGER_IP} ]; then
   # See https://stackoverflow.com/a/25851186
   SWARM_MANAGER_IP=$(ip route get 1 | awk '{print $(NF-2);exit}')
 fi
 
-if [ -z ${SWARM_WORKER_TOKEN} ]; then
-  docker swarm leave --force > /dev/null 2>&1
-  docker swarm init --advertise-addr ${SWARM_MANAGER_IP} > /dev/null 2>&1
-  SWARM_WORKER_TOKEN=$(docker swarm join-token -q worker)
-fi
+echo "Leave possible swarm..."
+docker swarm leave --force > /dev/null 2>&1
 
 docker-compose --file dind_swarm.yml up --detach storage
 sleep 3
-echo "Mounting network storage to host system..."
+echo "Mount network storage to host system..."
 sudo mkdir -p /mnt/opaque
 sudo mount -t cifs -o gid=${USER},password=opaque,uid=${USER},user=opaque,vers=3.0 //localhost/opaque_storage /mnt/opaque
-echo "Done"
-docker-compose --file dind_swarm.yml up --detach --scale worker=${SWARM_WORKER_NUMBER} worker
-sleep 10
-echo "Add workers to swarm"
+docker-compose --file dind_swarm.yml up --detach --scale worker=${SWARM_WORKER_NUMBER} worker viz
+sleep 5
+
+echo "Init Docker swarm..."
+docker swarm init --advertise-addr ${SWARM_MANAGER_IP} > /dev/null 2>&1
+
 
+echo "Join workers to swarm..."
+SWARM_WORKER_TOKEN=$(docker swarm join-token -q worker)
 for i in $(seq 1 ${SWARM_WORKER_NUMBER}); do
   docker-compose --file dind_swarm.yml exec --index=${i} worker docker swarm join --token ${SWARM_WORKER_TOKEN} ${SWARM_MANAGER_IP}:2377
 done
-
-
-docker-compose --file dind_swarm.yml up --detach viz
diff --git a/docker_stack_deploy.yml b/docker_stack_deploy.yml
new file mode 100644
index 00000000..2fc82642
--- /dev/null
+++ b/docker_stack_deploy.yml
@@ -0,0 +1,56 @@
+version: '3'
+
+services:
+  web:
+    depends_on:
+      - db
+      - redis
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
+    env_file:
+      - db.env
+      - web.env
+    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque:development
+    ports:
+      - 5000:5000
+    volumes:
+      - storage:/mnt/opaque
+  daemon:
+    depends_on:
+      - db
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
+    env_file:
+      - db.env
+      - web.env
+    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque_daemon:latest
+    volumes:
+      - storage:/mnt/opaque
+      - $HOME/.docker/config.json:/home/opaque_daemon/.docker/config.json
+  db:
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
+    env_file: db.env
+    image: postgres:11-alpine
+    volumes:
+      - /srv/opaque/database:/var/lib/postgresql/data
+  redis:
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
+    image: redis:alpine
+
+volumes:
+  storage:
+    driver: local
+    driver_opts:
+      device: "//127.0.0.1/opaque_storage"
+      o: "gid=1000,password=opaque,uid=1000,username=opaque"
+      type: cifs
-- 
GitLab