From b0c0925483c68a37e8dbe1badcda44c1dcd94b2a Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Wed, 29 Jul 2015 14:13:41 -0700 Subject: [PATCH 1/6] Added a MongoDB dump to oc_backup.sh, removed port 80 from Viz --- Makefile | 7 ++++++- config.env | 10 +++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ab23e41..bd0db57 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ hubdb: hub: - @ sudo mkdir -p $(PATH_HUB_SSH_HOST) $(PATH_HUB_SSH_AUTOSSH) + @ sudo mkdir -p $(PATH_HUB_AUTHKEYS) $(PATH_HUB_AUTOSSH) @ $(call dockerize,hub,$(DOCKER_HUB_PRODUCTION)) @@ -306,6 +306,11 @@ config-oc: echo 'cd $${SCRIPT_DIR}'; \ echo ''; \ echo ''; \ + echo '# Create a MongoDB dump'; \ + echo '#'; \ + echo 'sudo docker exec hubdb /app/mongodb_dump.sh';\ + echo ''; \ + echo ''; \ echo '# Copy non-sensitive MongoDB dumps to ./mongo_partial/'; \ echo '#'; \ echo 'sudo mkdir -p mongo_partial/'; \ diff --git a/config.env b/config.env index 36250e3..bf5bd52 100644 --- a/config.env +++ b/config.env @@ -16,7 +16,7 @@ RELEASE_VERSION=0.1.1 # Hub external IP/Address (10.0.2.2 for Vagrant/VirtualBox) # -URL_HUB=hub.pdc.io +URL_HUB= # Notification addresses @@ -26,7 +26,7 @@ EMAIL_ERRORS=errors@pdc.io # ownCloud backup details # -OWNCLOUD_ID=hub.pdc.io +OWNCLOUD_ID= OWNCLOUD_PW= OWNCLOUD_URL= @@ -129,8 +129,8 @@ PATH_DRUGREF=${PATH_HOST}/drugref # DACS # -DACS_KEYFILE=${DACS_STOREDIR}/federations/pdc.dev/federation_keyfile -DACS_ROLEFILE=${DACS_STOREDIR}/federations/pdc.dev/roles +DACS_KEYFILE=/etc/dacs/federations/pdc.dev/federation_keyfile +DACS_ROLEFILE=/etc/dacs/federations/pdc.dev/roles # Containers @@ -159,5 +159,5 @@ DOCKER_HUBDB_DEV_APPEND=-p ${PORT_MONGO}:27017 DOCKER_QI_PRODUCTION=--link hubdb:hubdb DOCKER_QI_DEV_APPEND= # -DOCKER_VIZ_PRODUCTION=--link auth:auth --link hapi:hapi -p 80:${PORT_VIZ} -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro +DOCKER_VIZ_PRODUCTION=--link auth:auth --link hapi:hapi -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro DOCKER_VIZ_DEV_APPEND=-p ${PORT_VIZ}:${PORT_VIZ} From 2e7b2c8605fd7606d48cffbbc99e9508793102a0 Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Wed, 29 Jul 2015 14:20:03 -0700 Subject: [PATCH 2/6] +viz_add.sh for giving Viz access --- viz_add.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 viz_add.sh diff --git a/viz_add.sh b/viz_add.sh new file mode 100755 index 0000000..e4e49ce --- /dev/null +++ b/viz_add.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# +# +set -e -o nounset + + +# Expected input +# +# $0 this script +# $1 Endpoint # +# $2 Doctor ID + + +# Check parameters +# +if([ $# -lt 2 ] || [ $# -gt 3 ]) +then + echo "" + echo "Unexpected number of parameters." + echo "" + echo "Usage: viz_add.sh [endpointNumber] [doctorID] [more soon!]" + echo "" + exit +fi + + +# Set variables from parameters +# +export EP_NUM=$(printf "%04d" ${1}) +export EP_NAME=pdc-${EP_NUM} +export DOCTOR=${2} + + +# Add Endpoint to the HubDB +# +#sudo docker exec hubdb /app/endpoint_add.sh $1 | grep WriteResult + + +# Get ClinicID (Endpoint's MongoDB ObjectID) and provide it to Auth +# +sudo docker exec -ti auth /sbin/setuser app /app/dacs_add.sh \ + ${DOCTOR} $(sudo docker exec hubdb /app/endpoint_getClinicID.sh ${EP_NUM}) \ + ${EP_NAME} admin TEST sample From 0930dc3378d9a3b87763a98456b7d903c424e6f7 Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Wed, 29 Jul 2015 14:29:01 -0700 Subject: [PATCH 3/6] Revised HubDB volumes and config.env variables --- Makefile | 4 ++-- config.env | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index bd0db57..32f7fee 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ prod: ######################### hubdb: - @ sudo mkdir -p $(PATH_MONGO) + @ sudo mkdir -p $(PATH_MONGO_DB) $(PATH_MONGO_DUMP) @ $(call dockerize,hubdb,$(DOCKER_HUBDB_PRODUCTION)) @ sudo docker exec hubdb /app/mongodb_init.sh > /dev/null @@ -442,7 +442,7 @@ define config_ep # Add Hub to known_hosts and receive Endpoint's public key # sudo docker exec ep$1 ssh -p $(PORT_AUTOSSH) -o StrictHostKeyChecking=no autossh@$(URL_HUB) 2> /dev/null || true - sudo docker exec ep$1 /app/key_exchange.sh | sudo tee -a $(PATH_HUB_SSH_AUTOSSH)/authorized_keys > /dev/null + sudo docker exec ep$1 /app/key_exchange.sh | sudo tee -a $(PATH_HUB_AUTOSSH)/authorized_keys > /dev/null # Add Endpoint to the HubDB # diff --git a/config.env b/config.env index bf5bd52..07ecc5c 100644 --- a/config.env +++ b/config.env @@ -16,7 +16,7 @@ RELEASE_VERSION=0.1.1 # Hub external IP/Address (10.0.2.2 for Vagrant/VirtualBox) # -URL_HUB= +URL_HUB=hub.pdc.io # Notification addresses @@ -26,9 +26,9 @@ EMAIL_ERRORS=errors@pdc.io # ownCloud backup details # -OWNCLOUD_ID= -OWNCLOUD_PW= -OWNCLOUD_URL= +OWNCLOUD_ID=hub.pdc.io +OWNCLOUD_PW= +OWNCLOUD_URL= # GitHub branch overrides @@ -118,13 +118,14 @@ URL_DCLAPI=http://dclapi:3007 # Host data folders # -PATH_HUB_AUTHKEYS=${PATH_HOST}/hub/etc/ssh -PATH_HUB_AUTOSSH=${PATH_HOST}/hub/home/autossh/DOTssh +PATH_HUB_AUTHKEYS=${PATH_HOST}/hub/etc/ssh/ +PATH_HUB_AUTOSSH=${PATH_HOST}/hub/home/autossh/DOTssh/ PATH_EPX_AUTOSSH=${PATH_HOST}/epx/root/DOTssh/ -PATH_CERT=${PATH_HOST}/cert -PATH_DACS=${PATH_HOST}/dacs -PATH_MONGO=${PATH_HOST}/mongo -PATH_DRUGREF=${PATH_HOST}/drugref +PATH_CERT=${PATH_HOST}/cert/ +PATH_DACS=${PATH_HOST}/dacs/ +PATH_MONGO_DB=${PATH_HOST}/mongo/db/ +PATH_MONGO_DUMP=${PATH_HOST}/mongo/dump/ +PATH_DRUGREF=${PATH_HOST}/drugref/ # DACS @@ -153,7 +154,7 @@ DOCKER_HAPI_DEV_APPEND=-p ${PORT_HAPI}:${PORT_HAPI} DOCKER_HUB_PRODUCTION=--link hubdb:hubdb -v ${PATH_HUB_AUTOSSH}:/home/autossh/.ssh/:rw -v ${PATH_HUB_AUTHKEYS}:/etc/ssh/:rw -p ${PORT_AUTOSSH}:22 -p ${PORT_HUB_WEB}:3002 DOCKER_HUB_DEV_APPEND= # -DOCKER_HUBDB_PRODUCTION=-v ${PATH_MONGO}:/data/:rw +DOCKER_HUBDB_PRODUCTION=-v ${PATH_MONGO_DB}:/data/db/:rw -v ${PATH_MONGO_DUMP}:/data/dump/:rw DOCKER_HUBDB_DEV_APPEND=-p ${PORT_MONGO}:27017 # DOCKER_QI_PRODUCTION=--link hubdb:hubdb From 0c04cb4711c8314dcef5cd78107e585343ef10fb Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Wed, 29 Jul 2015 14:42:36 -0700 Subject: [PATCH 4/6] Added alias for gitsubdiffs, which check git status in subdirectories --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 32f7fee..1e5dd11 100644 --- a/Makefile +++ b/Makefile @@ -269,6 +269,7 @@ config-bash: echo "alias r='sudo docker rm -fv'"; \ echo "alias s='sudo docker ps -a | less -S'"; \ echo "alias m='make'"; \ + echo "alias gitsubdiffs='find . -maxdepth 1 -mindepth 1 -type d -exec git -C {} status \;'"; \ ) | tee -a $${HOME}/.bashrc; \ echo ""; \ echo ""; \ From cca31e8c6c809337f137473cdaeb8a6409602e8a Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Wed, 29 Jul 2015 14:57:11 -0700 Subject: [PATCH 5/6] Moved MongoDB dumps from container to here, renamed make config-oc to config-backups --- Makefile | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1e5dd11..24a6ee2 100644 --- a/Makefile +++ b/Makefile @@ -278,8 +278,8 @@ config-bash: fi -config-oc: - # Add repository and install owncloud cmd client +config-backups: + # Add repository, install owncloud cmd client and run cronjobs for infrastructure and MongoDB data # @ echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_14.04/ /' \ | sudo tee /etc/apt/sources.list.d/owncloud-client.list @@ -351,10 +351,17 @@ config-oc: @ if((! sudo test -e /var/spool/cron/crontabs/root )||(! sudo grep --quiet 'oc_backup.sh' /var/spool/cron/crontabs/root )); \ then \ ( \ + echo ''; \ echo ''; \ echo '# Backup to ownCloud every 30 minutes'; \ echo '#'; \ echo '0,30 * * * * $\${PATH_HOST}/oc_backup.sh'; \ + echo ''; \ + echo ''; \ + echo '# Dump MongoDB nightly for UVic backup'; \ + echo '#'; \ + echo '15 1 * * * sudo docker exec hubdb /app/mongodb_dump.sh'; \ + echo ''; \ ) | sudo tee -a /var/spool/cron/crontabs/root; \ fi From 7738ededff7efc36e9b50936283f7e7c0be7c364 Mon Sep 17 00:00:00 2001 From: Derek Roberts Date: Thu, 30 Jul 2015 16:23:13 -0700 Subject: [PATCH 6/6] Revised to use varying release numbers assigned on config.env --- Makefile | 67 +++++++++++++++++++------------------------- config.env | 81 +++++++++++++++++++++++++----------------------------- 2 files changed, 67 insertions(+), 81 deletions(-) diff --git a/Makefile b/Makefile index 24a6ee2..3b6828e 100644 --- a/Makefile +++ b/Makefile @@ -49,42 +49,42 @@ prod: hubdb: @ sudo mkdir -p $(PATH_MONGO_DB) $(PATH_MONGO_DUMP) - @ $(call dockerize,hubdb,$(DOCKER_HUBDB_PRODUCTION)) + @ $(call dockerize,hubdb,$(DOCKER_HUBDB_PROD)) @ sudo docker exec hubdb /app/mongodb_init.sh > /dev/null hub: @ sudo mkdir -p $(PATH_HUB_AUTHKEYS) $(PATH_HUB_AUTOSSH) - @ $(call dockerize,hub,$(DOCKER_HUB_PRODUCTION)) + @ $(call dockerize,hub,$(DOCKER_HUB_PROD)) auth: @ sudo mkdir -p $(PATH_DACS) - @ $(call dockerize,auth,$(DOCKER_AUTH_PRODUCTION)) + @ $(call dockerize,auth,$(DOCKER_AUTH_PROD)) dclapi: @ sudo mkdir -p $(PATH_DRUGREF) - @ $(call dockerize,dclapi,$(DOCKER_DCLAPI_PRODUCTION)) + @ $(call dockerize,dclapi,$(DOCKER_DCLAPI_PROD)) hapi: - @ $(call dockerize,hapi,$(DOCKER_HAPI_PRODUCTION)) + @ $(call dockerize,hapi,$(DOCKER_HAPI_PROD)) viz: @ sudo mkdir -p $(PATH_CERT) - @ $(call dockerize,viz,$(DOCKER_VIZ_PRODUCTION)) + @ $(call dockerize,viz,$(DOCKER_VIZ_PROD)) ep-sample: @ sudo mkdir -p $(PATH_EPX_AUTOSSH) - @ $(call dockerize,endpoint,$(DOCKER_ENDPOINT_PRODUCTION),0) + @ $(call dockerize,endpoint,$(DOCKER_ENDPOINT_PROD),0) @ $(call config_ep,0,cpsid,cpsid,admin,TEST,sample) queries: - @ $(call dockerize,queries,$(DOCKER_QI_PRODUCTION)) + @ $(call dockerize,queries,$(DOCKER_QI_PROD)) @ sudo docker logs -f queries @ $(call docker_remove,queries) @@ -107,7 +107,7 @@ ep: echo "Usage: make ep [gID=#] [DOCTOR=#####] [op:JURISDUCTION] [op:ROLE] [op:PASSWORD]"; \ echo; \ else \ - $(call dockerize_ep,endpoint,$(DOCKER_ENDPOINT_PRODUCTION),$(gID)); \ + $(call dockerize_ep,endpoint,$(DOCKER_ENDPOINT_PROD),$(gID)); \ $(call config_ep,$(gID),$(DOCTOR),$(ROLE),$(JURISDICTION),$(PASSWORD)); \ fi @@ -493,40 +493,31 @@ endef include config.env -# Set branch defaults +# Override branch defaults for non-production modes # -ifeq ($(BUILD_MODE), dev) - BRANCH_DEFAULT = dev -else ifeq ($(BUILD_MODE), master) - BRANCH_DEFAULT = master -else - BRANCH_DEFAULT = $(RELEASE_VERSION) +ifneq ($(BUILD_MODE), prod) + BRANCH_AUTH ?= $(BUILD_MODE) + BRANCH_DCLAPI ?= $(BUILD_MODE) + BRANCH_ENDPOINT ?= $(BUILD_MODE) + BRANCH_EPXCLOUD ?= $(BUILD_MODE) + BRANCH_HAPI ?= $(BUILD_MODE) + BRANCH_HUB ?= $(BUILD_MODE) + BRANCH_HUBDB ?= $(BUILD_MODE) + BRANCH_QI ?= $(BUILD_MODE) + BRANCH_VIZ ?= $(BUILD_MODE) endif # Append Docker run commands for non-production modes # ifneq ($(BUILD_MODE), prod) - DOCKER_AUTH_PRODUCTION += $(DOCKER_AUTH_DEV_APPEND) - DOCKER_DCLAPI_PRODUCTION += $(DOCKER_DCLAPI_DEV_APPEND) - DOCKER_ENDPOINT_PRODUCTION += $(DOCKER_ENDPOINT_DEV_APPEND) - DOCKER_EPXCLOUD_PRODUCTION += $(DOCKER_ENDPOINT_DEV_APPEND) - DOCKER_HAPI_PRODUCTION += $(DOCKER_HAPI_DEV_APPEND) - DOCKER_HUB_PRODUCTION += $(DOCKER_HUB_DEV_APPEND) - DOCKER_HUBDB_PRODUCTION += $(DOCKER_HUBDB_DEV_APPEND) - DOCKER_QI_PRODUCTION += $(DOCKER_QI_DEV_APPEND) - DOCKER_VIZ_PRODUCTION += $(DOCKER_VIZ_DEV_APPEND) + DOCKER_AUTH_PROD += $(DOCKER_AUTH_JOIN) + DOCKER_DCLAPI_PROD += $(DOCKER_DCLAPI_JOIN) + DOCKER_ENDPOINT_PROD += $(DOCKER_ENDPOINT_JOIN) + DOCKER_EPXCLOUD_PROD += $(DOCKER_ENDPOINT_JOIN) + DOCKER_HAPI_PROD += $(DOCKER_HAPI_JOIN) + DOCKER_HUB_PROD += $(DOCKER_HUB_JOIN) + DOCKER_HUBDB_PROD += $(DOCKER_HUBDB_JOIN) + DOCKER_QI_PROD += $(DOCKER_QI_JOIN) + DOCKER_VIZ_PROD += $(DOCKER_VIZ_JOIN) endif - - -# Use branch defaults where overrides are not provided -# -BRANCH_AUTH ?= $(BRANCH_DEFAULT) -BRANCH_DCLAPI ?= $(BRANCH_DEFAULT) -BRANCH_ENDPOINT ?= $(BRANCH_DEFAULT) -BRANCH_EPXCLOUD ?= $(BRANCH_DEFAULT) -BRANCH_HAPI ?= $(BRANCH_DEFAULT) -BRANCH_HUB ?= $(BRANCH_DEFAULT) -BRANCH_HUBDB ?= $(BRANCH_DEFAULT) -BRANCH_QI ?= $(BRANCH_DEFAULT) -BRANCH_VIZ ?= $(BRANCH_DEFAULT) diff --git a/config.env b/config.env index 07ecc5c..b3b5655 100644 --- a/config.env +++ b/config.env @@ -9,19 +9,26 @@ BUILD_MODE=prod -# Release -# -RELEASE_VERSION=0.1.1 - - # Hub external IP/Address (10.0.2.2 for Vagrant/VirtualBox) # -URL_HUB=hub.pdc.io +URL_HUB=10.0.2.2 -# Notification addresses +# GitHub branch overrides # -EMAIL_ERRORS=errors@pdc.io +# Comment out to accept branch assigned by ${BUILD_MODE} +# +# (Note: do not leave blank values!) +# +BRANCH_AUTH=0.1.2 +BRANCH_DCLAPI=0.1.1 +BRANCH_ENDPOINT=0.1.2 +BRANCH_EPXCLOUD=0.1.1 +BRANCH_HAPI=0.1.2 +BRANCH_HUB=0.1.1 +BRANCH_HUBDB=0.1.2 +BRANCH_QI=0.1.1 +BRANCH_VIZ=0.1.2 # ownCloud backup details @@ -31,23 +38,6 @@ OWNCLOUD_PW= OWNCLOUD_URL= -# GitHub branch overrides -# -# Comment out to accept branch assigned by ${BUILD_MODE} -# -# (Note: do not leave blank values!) -# -#BRANCH_AUTH=master -#BRANCH_DCLAPI=master -#BRANCH_ENDPOINT=master -#BRANCH_EP=master -#BRANCH_HAPI=master -#BRANCH_HUB=master -#BRANCH_HUBDB=master -#BRANCH_QI=master -#BRANCH_VIZ=master - - # DACS # DACS_STOREDIR=/etc/dacs @@ -60,6 +50,11 @@ DACS_JURISDICTION=TEST PATH_HOST=/pdc/data +# Notification addresses +# +EMAIL_ERRORS=errors@pdc.io + + # Node.js # NODE_TLS_REJECT_UNAUTHORIZED=0 @@ -136,29 +131,29 @@ DACS_ROLEFILE=/etc/dacs/federations/pdc.dev/roles # Containers # -DOCKER_AUTH_PRODUCTION=-v ${PATH_DACS}:${DACS_STOREDIR}/:rw -DOCKER_AUTH_DEV_APPEND=-p ${PORT_AUTH_M}:${PORT_AUTH_M} -p ${PORT_AUTH_C}:${PORT_AUTH_C} +DOCKER_AUTH_PROD=-v ${PATH_DACS}:${DACS_STOREDIR}/:rw +DOCKER_AUTH_SUPPLEMENT=-p ${PORT_AUTH_M}:${PORT_AUTH_M} -p ${PORT_AUTH_C}:${PORT_AUTH_C} # -DOCKER_DCLAPI_PRODUCTION=-v ${PATH_DRUGREF}:/app/drugref/ -DOCKER_DCLAPI_DEV_APPEND=-p ${PORT_DACS}:${PORT_DACS} +DOCKER_DCLAPI_PROD=-v ${PATH_DRUGREF}:/app/drugref/ +DOCKER_DCLAPI_JOIN=-p ${PORT_DACS}:${PORT_DACS} # -DOCKER_ENDPOINT_PRODUCTION=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:rw -DOCKER_ENDPOINT_DEV_APPEND= +DOCKER_ENDPOINT_PROD=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:rw +DOCKER_ENDPOINT_JOIN= # -DOCKER_EPXCLOUD_PRODUCTION=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:ro -DOCKER_EPXCLOUD_DEV_APPEND= +DOCKER_EPXCLOUD_PROD=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:ro +DOCKER_EPXCLOUD_JOIN= # -DOCKER_HAPI_PRODUCTION=--link auth:auth --link hubdb:hubdb --link dclapi:dclapi -DOCKER_HAPI_DEV_APPEND=-p ${PORT_HAPI}:${PORT_HAPI} +DOCKER_HAPI_PROD=--link auth:auth --link hubdb:hubdb --link dclapi:dclapi +DOCKER_HAPI_JOIN=-p ${PORT_HAPI}:${PORT_HAPI} # -DOCKER_HUB_PRODUCTION=--link hubdb:hubdb -v ${PATH_HUB_AUTOSSH}:/home/autossh/.ssh/:rw -v ${PATH_HUB_AUTHKEYS}:/etc/ssh/:rw -p ${PORT_AUTOSSH}:22 -p ${PORT_HUB_WEB}:3002 -DOCKER_HUB_DEV_APPEND= +DOCKER_HUB_PROD=--link hubdb:hubdb -v ${PATH_HUB_AUTOSSH}:/home/autossh/.ssh/:rw -v ${PATH_HUB_AUTHKEYS}:/etc/ssh/:rw -p ${PORT_AUTOSSH}:22 -p ${PORT_HUB_WEB}:3002 +DOCKER_HUB_JOIN= # -DOCKER_HUBDB_PRODUCTION=-v ${PATH_MONGO_DB}:/data/db/:rw -v ${PATH_MONGO_DUMP}:/data/dump/:rw -DOCKER_HUBDB_DEV_APPEND=-p ${PORT_MONGO}:27017 +DOCKER_HUBDB_PROD=-v ${PATH_MONGO_DB}:/data/db/:rw -v ${PATH_MONGO_DUMP}:/data/dump/:rw +DOCKER_HUBDB_JOIN=-p ${PORT_MONGO}:27017 # -DOCKER_QI_PRODUCTION=--link hubdb:hubdb -DOCKER_QI_DEV_APPEND= +DOCKER_QI_PROD=--link hubdb:hubdb +DOCKER_QI_JOIN= # -DOCKER_VIZ_PRODUCTION=--link auth:auth --link hapi:hapi -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro -DOCKER_VIZ_DEV_APPEND=-p ${PORT_VIZ}:${PORT_VIZ} +DOCKER_VIZ_PROD=--link auth:auth --link hapi:hapi -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro +DOCKER_VIZ_JOIN=-p ${PORT_VIZ}:${PORT_VIZ}