Initial commit
This commit is contained in:
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.*
|
||||||
|
!.gitignore
|
||||||
|
settings.local.*
|
||||||
|
data
|
||||||
|
portainer
|
||||||
|
postgres
|
||||||
|
mesos-master
|
||||||
|
mesos-slave
|
||||||
|
woken/application.conf
|
||||||
|
woken/validation.conf
|
||||||
260
docker-compose.yml
Normal file
260
docker-compose.yml
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
# Copyright (c) 2018-2018
|
||||||
|
# Data Intensive Applications and Systems Labaratory (DIAS)
|
||||||
|
# Ecole Polytechnique Federale de Lausanne
|
||||||
|
#
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify and distribute this software and its
|
||||||
|
# documentation is hereby granted, provided that both the copyright notice
|
||||||
|
# and this permission notice appear in all copies of the software, derivative
|
||||||
|
# works or modified versions, and any portions thereof, and that both notices
|
||||||
|
# appear in supporting documentation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE. THE AUTHORS AND ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
|
||||||
|
# DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
|
||||||
|
# USE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
local:
|
||||||
|
|
||||||
|
services:
|
||||||
|
zookeeper:
|
||||||
|
image: ${ZOOKEEPER_IMAGE}${ZOOKEEPER_VERSION}
|
||||||
|
environment:
|
||||||
|
ZOO_MY_ID: 1
|
||||||
|
ZOO_SERVERS: server.1=zookeeper:2888:3888
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${ZOOKEEPER_PORT1}:2181"
|
||||||
|
# - "${ZOOKEEPER_PORT2}:2888"
|
||||||
|
# - "${ZOOKEEPER_PORT3}:3888"
|
||||||
|
|
||||||
|
mesos-master:
|
||||||
|
image: ${MESOS_MASTER_IMAGE}${MESOS_MASTER_VERSION}
|
||||||
|
environment:
|
||||||
|
MESOS_PORT: 5050
|
||||||
|
MESOS_ZK: zk://zookeeper:${ZOOKEEPER_PORT1}/mesos
|
||||||
|
MESOS_QUORUM: 1
|
||||||
|
MESOS_REGISTRY: in_memory
|
||||||
|
MESOS_CLUSTER: local
|
||||||
|
MESOS_HOSTNAME: mesos-master
|
||||||
|
MESOS_LOG_DIR: /var/log/mesos
|
||||||
|
MESOS_WORK_DIR: /tmp/mesos
|
||||||
|
volumes:
|
||||||
|
- ${MESOS_MASTER_LOGS}:/var/log/mesos:rw
|
||||||
|
- ${MESOS_MASTER_TMP}:/tmp/mesos:rw
|
||||||
|
depends_on:
|
||||||
|
- zookeeper
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${MESOS_MASTER_PORT}:5050"
|
||||||
|
|
||||||
|
mesos-slave:
|
||||||
|
image: ${MESOS_SLAVE_IMAGE}${MESOS_SLAVE_VERSION}
|
||||||
|
environment:
|
||||||
|
MESOS_MASTER: zk://zookeeper:${ZOOKEEPER_PORT1}/mesos
|
||||||
|
MESOS_PORT: 5051
|
||||||
|
MESOS_LOG_DIR: /var/log/mesos
|
||||||
|
MESOS_WORK_DIR: /tmp/mesos
|
||||||
|
MESOS_CONTAINERIZERS: docker,mesos
|
||||||
|
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
|
||||||
|
MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD: 90secs
|
||||||
|
MESOS_DOCKER_STOP_TIMEOUT: 60secs
|
||||||
|
MESOS_HOSTNAME: mesos-slave
|
||||||
|
MESOS_SWITCH_USER: 0
|
||||||
|
# see bug resolution for "Failed to determine the hierarchy where the subsystem freezer is attached" at https://github.com/eBayClassifiedsGroup/PanteraS/issues/142
|
||||||
|
MESOS_LAUNCHER: "posix"
|
||||||
|
# privileged: true
|
||||||
|
depends_on:
|
||||||
|
- zookeeper
|
||||||
|
- mesos-master
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
volumes:
|
||||||
|
- /sys:/sys:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:rw
|
||||||
|
- ${MESOS_SLAVE_LOGS}:/var/log/mesos:rw
|
||||||
|
- ${MESOS_SLAVE_TMP}:/tmp/mesos:rw
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${MESOS_SLAVE_PORT}:5051"
|
||||||
|
|
||||||
|
chronos:
|
||||||
|
image: ${CHRONOS_IMAGE}${CHRONOS_VERSION}
|
||||||
|
command: "--zk_hosts zookeeper:${ZOOKEEPER_PORT1} --master zk://zookeeper:${ZOOKEEPER_PORT1}/mesos --zk_timeout 30000"
|
||||||
|
environment:
|
||||||
|
PORT0: 4400
|
||||||
|
PORT1: 4401
|
||||||
|
depends_on:
|
||||||
|
- zookeeper
|
||||||
|
- mesos-slave
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${CHRONOS_PORT1}:4400"
|
||||||
|
# - "${CHRONOS_PORT2}:4401"
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: ${DB_IMAGE}${DB_VERSION}
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: ${DB_USER_ADMIN}
|
||||||
|
POSTGRES_PASSWORD: ${DB_PASSWORD_ADMIN}
|
||||||
|
PGDATA: "/data/pgdata"
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
volumes:
|
||||||
|
- ${DB_DATA}:/data:rw
|
||||||
|
- ${DB_DATASETS}:/datasets:ro
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${DB_PORT}:5432"
|
||||||
|
|
||||||
|
woken:
|
||||||
|
image: ${WOKEN_IMAGE}${WOKEN_VERSION}
|
||||||
|
depends_on:
|
||||||
|
- chronos
|
||||||
|
# - db
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
volumes:
|
||||||
|
- ${WOKEN_CONF}:/opt/woken/config/application.conf:ro
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${WOKEN_PORT2}:${WOKEN_PORT2}"
|
||||||
|
# - "${WOKEN_PORT1}:${WOKEN_PORT1}"
|
||||||
|
|
||||||
|
woken-validation:
|
||||||
|
image: ${WOKEN_VALIDATION_IMAGE}${WOKEN_VALIDATION_VERSION}
|
||||||
|
depends_on:
|
||||||
|
- woken
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
volumes:
|
||||||
|
- ${WOKEN_VALIDATION_CONF}:/opt/woken-validation/config/application.conf:ro
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "${WOKEN_VALIDATION_PORT}:${WOKEN_VALIDATION_PORT}"
|
||||||
|
|
||||||
|
backend:
|
||||||
|
image: ${PORTAL_BACKEND_IMAGE}${PORTAL_BACKEND_VERSION}
|
||||||
|
environment:
|
||||||
|
PORTAL_DB_URL: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME4}
|
||||||
|
PORTAL_DB_SERVER: ${DB_HOST}:${DB_PORT}
|
||||||
|
PORTAL_DB_USER: ${DB_USER4}
|
||||||
|
PORTAL_DB_PASSWORD: ${DB_PASSWORD4}
|
||||||
|
META_DB_URL: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME1}
|
||||||
|
META_DB_SERVER: ${DB_HOST}:${DB_PORT}
|
||||||
|
META_DB_USER: ${DB_USER1}
|
||||||
|
META_DB_PASSWORD: ${DB_PASSWORD1}
|
||||||
|
FEATURES_DB_URL: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME2}
|
||||||
|
FEATURES_DB_SERVER: ${DB_HOST}:${DB_PORT}
|
||||||
|
FEATURES_DB_USER: ${DB_USER2}
|
||||||
|
FEATURES_DB_PASSWORD: ${DB_PASSWORD2}
|
||||||
|
FEATURES_DB_MAIN_TABLE: cde_features_a
|
||||||
|
CONTEXT_PATH: /services
|
||||||
|
AUTHENTICATION: ${PORTAL_BACKEND_AUTHENTICATION}
|
||||||
|
CLIENT_ID: ${PORTAL_BACKEND_CLIENT_ID}
|
||||||
|
CLIENT_SECRET: ${PORTAL_BACKEND_CLIENT_SECRET}
|
||||||
|
TOKEN_URI: https://services.humanbrainproject.eu/oidc/token
|
||||||
|
AUTH_URI: https://services.humanbrainproject.eu/oidc/authorize
|
||||||
|
USER_INFO_URI: https://services.humanbrainproject.eu/oidc/userinfo
|
||||||
|
FRONTEND_LOGIN_URL: ${PORTAL_FRONTEND_URL}/services/login/hbp
|
||||||
|
FRONTEND_AFTER_LOGIN_URL: ${PORTAL_FRONTEND_URL}/home
|
||||||
|
FRONTEND_AFTER_LOGOUT_URL: ${PORTAL_FRONTEND_URL}/services/login/hbp
|
||||||
|
WOKEN_HOST: ${WOKEN_HOST}
|
||||||
|
WOKEN_PORT: ${WOKEN_PORT1}
|
||||||
|
WOKEN_AKKA_PATH: /user/entrypoint
|
||||||
|
EXAREME_URL: ${WOKEN_EXAREME_URL}
|
||||||
|
LOGGING_LEVEL_WEB: DEBUG
|
||||||
|
LOGGING_LEVEL_HIBERNATE: WARN
|
||||||
|
SESSION_TIMEOUT: 2592000
|
||||||
|
VIRTUAL_HOST: backend
|
||||||
|
VIRTUAL_PORT: 8080
|
||||||
|
depends_on:
|
||||||
|
# - db
|
||||||
|
- woken
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
# ports:
|
||||||
|
# - "8080:8080"
|
||||||
|
# - "8089:8089"
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
image: ${PORTAL_FRONTEND_IMAGE}${PORTAL_FRONTEND_VERSION}
|
||||||
|
environment:
|
||||||
|
WORKER_PROCESSES: 1
|
||||||
|
ERROR_LOG_LEVEL: warn
|
||||||
|
PORTAL_VIRTUAL_HOST: frontend
|
||||||
|
PORTAL_BACKEND_SERVER: backend:8080
|
||||||
|
PORTAL_BACKEND_CONTEXT: services
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
restart: unless-stopped # Used only by docker-compose
|
||||||
|
deploy: # Used only by docker stack
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
delay: 5s
|
||||||
|
max_attempts: 3
|
||||||
|
window: 120s
|
||||||
|
networks:
|
||||||
|
- local
|
||||||
|
ports:
|
||||||
|
- "${PORTAL_FRONTEND_PORT}:80"
|
||||||
77
load_data.sh
Executable file
77
load_data.sh
Executable file
@@ -0,0 +1,77 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2018-2018
|
||||||
|
# Data Intensive Applications and Systems Labaratory (DIAS)
|
||||||
|
# Ecole Polytechnique Federale de Lausanne
|
||||||
|
#
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify and distribute this software and its
|
||||||
|
# documentation is hereby granted, provided that both the copyright notice
|
||||||
|
# and this permission notice appear in all copies of the software, derivative
|
||||||
|
# works or modified versions, and any portions thereof, and that both notices
|
||||||
|
# appear in supporting documentation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE. THE AUTHORS AND ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
|
||||||
|
# DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
|
||||||
|
# USE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
# Import settings
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
# 1. Create all the DB at once
|
||||||
|
echo "Create databases..."
|
||||||
|
db_id=$(docker run --rm -d \
|
||||||
|
-e POSTGRES_USER="${DB_USER_ADMIN}" \
|
||||||
|
-e POSTGRES_PASSWORD="${DB_PASSWORD_ADMIN}" \
|
||||||
|
-e PGDATA="/data/pgdata" \
|
||||||
|
-v ${DB_DATA}:/data:rw \
|
||||||
|
-v ${DB_DATASETS}:/datasets:ro \
|
||||||
|
--network=${MIP_PRIVATE_NETWORK} \
|
||||||
|
--name ${DB_HOST} \
|
||||||
|
${DB_IMAGE}${DB_VERSION}
|
||||||
|
)
|
||||||
|
|
||||||
|
db_list=""
|
||||||
|
for f in ${DB_CREATE_LIST}
|
||||||
|
do
|
||||||
|
eval "t=\"\
|
||||||
|
-e DB${f}=\${DB_NAME${f}} \
|
||||||
|
-e USER${f}=\${DB_USER${f}} \
|
||||||
|
-e PASSWORD${f}=\${DB_PASSWORD${f}}\""
|
||||||
|
db_list="$db_list $t"
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
-e DB_HOST="${DB_HOST}" \
|
||||||
|
-e DB_PORT="${DB_PORT}" \
|
||||||
|
-e DB_ADMIN_USER="${DB_USER_ADMIN}" \
|
||||||
|
-e DB_ADMIN_PASSWORD="${DB_PASSWORD_ADMIN}" \
|
||||||
|
${db_list} \
|
||||||
|
--network=${MIP_PRIVATE_NETWORK} \
|
||||||
|
${DB_CREATE_IMAGE}${DB_CREATE_VERSION}
|
||||||
|
|
||||||
|
# 2. Pre-populate the DBs which needs it
|
||||||
|
for f in ${DB_SETUP_LIST}
|
||||||
|
do
|
||||||
|
eval "img=\${${f}_IMAGE}"
|
||||||
|
eval "version=\${${f}_VERSION}"
|
||||||
|
eval "db=\${${f}_DB}"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Executing ${img}${version}"
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
-e FLYWAY_HOST="${DB_HOST}" \
|
||||||
|
-e FLYWAY_PORT="${DB_PORT}" \
|
||||||
|
-e FLYWAY_USER="${DB_USER_ADMIN}" \
|
||||||
|
-e FLYWAY_PASSWORD="${DB_PASSWORD_ADMIN}" \
|
||||||
|
-e FLYWAY_DATABASE_NAME="${db}" \
|
||||||
|
--network=${MIP_PRIVATE_NETWORK} \
|
||||||
|
${img}${version}
|
||||||
|
done
|
||||||
|
|
||||||
|
docker stop ${db_id}
|
||||||
33
run.sh
Executable file
33
run.sh
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2018-2018
|
||||||
|
# Data Intensive Applications and Systems Labaratory (DIAS)
|
||||||
|
# Ecole Polytechnique Federale de Lausanne
|
||||||
|
#
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify and distribute this software and its
|
||||||
|
# documentation is hereby granted, provided that both the copyright notice
|
||||||
|
# and this permission notice appear in all copies of the software, derivative
|
||||||
|
# works or modified versions, and any portions thereof, and that both notices
|
||||||
|
# appear in supporting documentation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE. THE AUTHORS AND ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
|
||||||
|
# DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
|
||||||
|
# USE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
# Import settings
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
for f in ${WOKEN_CONF} ${WOKEN_VALIDATION_CONF}
|
||||||
|
do
|
||||||
|
for v in $(grep '^:' settings.default.sh|cut -c 5- |cut -d: -f1)
|
||||||
|
do
|
||||||
|
eval "t=\"s#${v}#\${${v}}#g\""
|
||||||
|
script="${script}${t};"
|
||||||
|
sed -e "${script}" $f.in > $f
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
docker-compose $@
|
||||||
115
settings.default.sh
Normal file
115
settings.default.sh
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
: ${SHOW_SETTINGS:=false}
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# DATABASES
|
||||||
|
# Service Parameters
|
||||||
|
: ${DB_IMAGE:="postgres"}
|
||||||
|
: ${DB_VERSION:=":9.6.5-alpine"}
|
||||||
|
: ${DB_HOST:="db"}
|
||||||
|
: ${DB_PORT:="5432"}
|
||||||
|
: ${DB_DATA:="${PWD}/postgres"}
|
||||||
|
: ${DB_DATASETS:="${PWD}/datasets"}
|
||||||
|
: ${DB_USER_ADMIN:="postgres"}
|
||||||
|
: ${DB_PASSWORD_ADMIN:="test"}
|
||||||
|
|
||||||
|
# Databases Definitions:
|
||||||
|
# 1. To add a new DB, copy the last 3 lines below and increment the id
|
||||||
|
# 2. Add the new number in DB_CREATE_LIST
|
||||||
|
: ${DB_NAME1:="meta"}
|
||||||
|
: ${DB_USER1:="meta"}
|
||||||
|
: ${DB_PASSWORD1:="metapwd"}
|
||||||
|
|
||||||
|
: ${DB_NAME2:="features"}
|
||||||
|
: ${DB_USER2:="features"}
|
||||||
|
: ${DB_PASSWORD2:="featurespwd"}
|
||||||
|
|
||||||
|
: ${DB_NAME3:="woken"}
|
||||||
|
: ${DB_USER3:="woken"}
|
||||||
|
: ${DB_PASSWORD3:="wokenpwd"}
|
||||||
|
|
||||||
|
: ${DB_NAME4:="portal"}
|
||||||
|
: ${DB_USER4:="portal"}
|
||||||
|
: ${DB_PASSWORD4:="portalpwd"}
|
||||||
|
|
||||||
|
# Database setup tools
|
||||||
|
: ${DB_CREATE_IMAGE:="hbpmip/create-databases"}
|
||||||
|
: ${DB_CREATE_VERSION:=":1.0.0"}
|
||||||
|
# List of databases to create
|
||||||
|
: ${DB_CREATE_LIST:="1 2 3 4"}
|
||||||
|
|
||||||
|
: ${WOKEN_SETUP_IMAGE:="hbpmip/woken-db-setup"}
|
||||||
|
: ${WOKEN_SETUP_VERSION:=":1.0.2"}
|
||||||
|
: ${WOKEN_SETUP_DB:=${DB_NAME3}}
|
||||||
|
|
||||||
|
: ${METADATA_SETUP_IMAGE:="hbpmip/sample-meta-db-setup"}
|
||||||
|
: ${METADATA_SETUP_VERSION:=":0.4.0"}
|
||||||
|
: ${METADATA_SETUP_DB:=${DB_NAME1}}
|
||||||
|
|
||||||
|
: ${DATA_SETUP_IMAGE:="hbpmip/sample-data-db-setup"}
|
||||||
|
: ${DATA_SETUP_VERSION:=":0.5.0"}
|
||||||
|
: ${DATA_SETUP_DB:=${DB_NAME2}}
|
||||||
|
|
||||||
|
# List of databases to populate
|
||||||
|
: ${DB_SETUP_LIST:="WOKEN_SETUP METADATA_SETUP DATA_SETUP"}
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
: ${MIP_PRIVATE_NETWORK:="mip_local"}
|
||||||
|
: ${COMPOSE_PROJECT_NAME:="mip"}
|
||||||
|
|
||||||
|
: ${PORTAINER_IMAGE:="portainer/portainer"}
|
||||||
|
: ${PORTAINER_VERSION:=":latest"}
|
||||||
|
: ${PORTAINER_HOST:="portainer"}
|
||||||
|
: ${PORTAINER_PORT:="9000"}
|
||||||
|
: ${PORTAINER_DATA:="${PWD}/portainer"}
|
||||||
|
: ${PORTAINER_ENABLED:="true"}
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# Services
|
||||||
|
: ${ZOOKEEPER_IMAGE:="zookeeper"}
|
||||||
|
: ${ZOOKEEPER_VERSION:=":3.4.11"}
|
||||||
|
: ${ZOOKEEPER_PORT1:="2181"}
|
||||||
|
: ${ZOOKEEPER_PORT2:="2888"}
|
||||||
|
: ${ZOOKEEPER_PORT3:="3888"}
|
||||||
|
|
||||||
|
: ${MESOS_MASTER_IMAGE:="mesosphere/mesos-master"}
|
||||||
|
: ${MESOS_MASTER_VERSION:=":1.3.0"}
|
||||||
|
: ${MESOS_MASTER_PORT:="5050"}
|
||||||
|
: ${MESOS_MASTER_LOGS:="${PWD}/mesos-master/logs"}
|
||||||
|
: ${MESOS_MASTER_TMP:="${PWD}/mesos-master/tmp"}
|
||||||
|
|
||||||
|
: ${MESOS_SLAVE_IMAGE:="mesosphere/mesos-slave"}
|
||||||
|
: ${MESOS_SLAVE_VERSION:=":1.3.0"}
|
||||||
|
: ${MESOS_SLAVE_PORT:="5051"}
|
||||||
|
: ${MESOS_SLAVE_LOGS:="${PWD}/mesos-slave/logs"}
|
||||||
|
: ${MESOS_SLAVE_TMP:="${PWD}/mesos-slave/tmp"}
|
||||||
|
|
||||||
|
: ${CHRONOS_IMAGE:="mesosphere/chronos"}
|
||||||
|
: ${CHRONOS_VERSION:=":v3.0.2"}
|
||||||
|
: ${CHRONOS_HOST:="chronos"}
|
||||||
|
: ${CHRONOS_PORT1:="4400"}
|
||||||
|
: ${CHRONOS_PORT2:="4401"}
|
||||||
|
|
||||||
|
: ${WOKEN_IMAGE:="hbpmip/woken"}
|
||||||
|
: ${WOKEN_VERSION:=":2.1.4"}
|
||||||
|
: ${WOKEN_HOST:="woken"}
|
||||||
|
: ${WOKEN_CONF:="${PWD}/woken/application.conf"}
|
||||||
|
: ${WOKEN_PORT1:="8088"}
|
||||||
|
: ${WOKEN_PORT2:="8087"}
|
||||||
|
: ${WOKEN_EXAREME_URL:="http://prozac.madgik.di.uoa.gr:9090/mining/query"}
|
||||||
|
|
||||||
|
: ${WOKEN_VALIDATION_IMAGE:="hbpmip/woken-validation"}
|
||||||
|
: ${WOKEN_VALIDATION_VERSION:=":2.1.0"}
|
||||||
|
: ${WOKEN_VALIDATION_HOST:="woken-validation"}
|
||||||
|
: ${WOKEN_VALIDATION_PORT:="8082"}
|
||||||
|
: ${WOKEN_VALIDATION_CONF:="${PWD}/woken/validation.conf"}
|
||||||
|
|
||||||
|
: ${PORTAL_BACKEND_IMAGE:="hbpmip/portal-backend"}
|
||||||
|
: ${PORTAL_BACKEND_VERSION:=":2.5.4"}
|
||||||
|
: ${PORTAL_BACKEND_AUTHENTICATION:="0"}
|
||||||
|
: ${PORTAL_BACKEND_CLIENT_ID:="none"}
|
||||||
|
: ${PORTAL_BACKEND_CLIENT_SECRET:="none"}
|
||||||
|
|
||||||
|
: ${PORTAL_FRONTEND_IMAGE:="hbpmip/portal-frontend"}
|
||||||
|
: ${PORTAL_FRONTEND_VERSION:=":2.6.0"}
|
||||||
|
: ${PORTAL_FRONTEND_PORT:="80"}
|
||||||
|
: ${PORTAL_FRONTEND_URL:="http://172.16.22.176:80"}
|
||||||
39
settings.sh
Normal file
39
settings.sh
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#Settings are taken in the following order of precedence:
|
||||||
|
# 1. Shell Environment, or on the command line
|
||||||
|
|
||||||
|
# 2. Node-specific settings `settings.local.<Alias>.sh`
|
||||||
|
if test ! -z "$1" && test -f ./settings.local.$1.sh;
|
||||||
|
then
|
||||||
|
. ./settings.local.$1.sh;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Federation-specific `settings.local.sh`
|
||||||
|
if test -f ./settings.local.sh;
|
||||||
|
then
|
||||||
|
. ./settings.local.sh;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Default settings `settings.default.sh`
|
||||||
|
if test -f ./settings.default.sh;
|
||||||
|
then
|
||||||
|
. ./settings.default.sh;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ${SHOW_SETTINGS};
|
||||||
|
then
|
||||||
|
echo "Current settings:"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for v in $(grep '^:' settings.default.sh|cut -c 5- |cut -d: -f1)
|
||||||
|
do
|
||||||
|
eval "export $v=\"\$$v\""
|
||||||
|
if ${SHOW_SETTINGS};
|
||||||
|
then
|
||||||
|
eval "echo $v=\$$v"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if ${SHOW_SETTINGS};
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
fi
|
||||||
49
setup.sh
Executable file
49
setup.sh
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2018-2018
|
||||||
|
# Data Intensive Applications and Systems Labaratory (DIAS)
|
||||||
|
# Ecole Polytechnique Federale de Lausanne
|
||||||
|
#
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify and distribute this software and its
|
||||||
|
# documentation is hereby granted, provided that both the copyright notice
|
||||||
|
# and this permission notice appear in all copies of the software, derivative
|
||||||
|
# works or modified versions, and any portions thereof, and that both notices
|
||||||
|
# appear in supporting documentation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE. THE AUTHORS AND ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
|
||||||
|
# DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
|
||||||
|
# USE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
# Import settings
|
||||||
|
. ./settings.sh
|
||||||
|
|
||||||
|
# If requested, setup portainer:
|
||||||
|
if ${PORTAINER_ENABLED}
|
||||||
|
then
|
||||||
|
# Permanent storage for Portainer
|
||||||
|
mkdir -p ${PORTAINER_DATA}
|
||||||
|
|
||||||
|
docker run -d -p ${PORTAINER_PORT}:9000 \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock:rw \
|
||||||
|
-v ${PORTAINER_DATA}:/data:rw \
|
||||||
|
--name ${COMPOSE_PROJECT_NAME}_${PORTAINER_HOST} \
|
||||||
|
${PORTAINER_IMAGE}${PORTAINER_VERSION}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Permanent storage for the Databases
|
||||||
|
mkdir -p ${DB_DATA}
|
||||||
|
mkdir -p ${DB_DATASETS}
|
||||||
|
sudo chown -R 999:999 ${DB_DATA} ${DB_DATASETS}
|
||||||
|
|
||||||
|
# Permanent storage for Mesos
|
||||||
|
mkdir -p ${MESOS_MASTER_LOGS}
|
||||||
|
mkdir -p ${MESOS_MASTER_TMP}
|
||||||
|
mkdir -p ${MESOS_SLAVE_LOGS}
|
||||||
|
mkdir -p ${MESOS_SLAVE_TMP}
|
||||||
|
|
||||||
|
# Preload the databases
|
||||||
|
./load_data.sh
|
||||||
172
woken/application.conf.in
Normal file
172
woken/application.conf.in
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
|
||||||
|
# Sample configuration for local execution of the woken
|
||||||
|
|
||||||
|
akka {
|
||||||
|
log-dead-letters = 1
|
||||||
|
log-dead-letters-during-shutdown = off
|
||||||
|
loglevel = INFO
|
||||||
|
|
||||||
|
actor {
|
||||||
|
provider = "akka.cluster.ClusterActorRefProvider"
|
||||||
|
debug {
|
||||||
|
receive = on
|
||||||
|
autoreceive = off
|
||||||
|
lifecycle = on
|
||||||
|
fsm = on
|
||||||
|
unhandled = on
|
||||||
|
event-stream = off
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
remote {
|
||||||
|
log-sent-messages = off
|
||||||
|
log-received-messages = off
|
||||||
|
log-remote-lifecycle-events = off
|
||||||
|
|
||||||
|
maximum-payload-bytes = 10000000 bytes
|
||||||
|
enabled-transports = [ "akka.remote.netty.tcp" ]
|
||||||
|
|
||||||
|
netty.tcp {
|
||||||
|
|
||||||
|
hostname = WOKEN_HOST # external (logical) hostname
|
||||||
|
port = WOKEN_PORT1 # external (logical) port
|
||||||
|
|
||||||
|
bind-hostname = localhost # internal (bind) hostname
|
||||||
|
bind-port = WOKEN_PORT1 # internal (bind) port
|
||||||
|
|
||||||
|
message-frame-size = 10000000b
|
||||||
|
send-buffer-size = 10000000b
|
||||||
|
receive-buffer-size = 10000000b
|
||||||
|
maximum-frame-size = 10000000b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cluster {
|
||||||
|
seed-nodes = [ "akka.tcp://woken@WOKEN_HOST:WOKEN_PORT1" ]
|
||||||
|
|
||||||
|
roles = [ "woken" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spray.can.server {
|
||||||
|
idle-timeout = 300s
|
||||||
|
request-timeout = 180s
|
||||||
|
ssl-encryption = off
|
||||||
|
ssl-tracing = on
|
||||||
|
}
|
||||||
|
|
||||||
|
spray.can.client {
|
||||||
|
request-timeout = 20s
|
||||||
|
chunkless-streaming = off
|
||||||
|
connecting-timeout = 10s
|
||||||
|
}
|
||||||
|
|
||||||
|
spray.can.host-connector {
|
||||||
|
max-connections = 5
|
||||||
|
host-connector.max-retries = 2
|
||||||
|
pipelining = on
|
||||||
|
}
|
||||||
|
|
||||||
|
app {
|
||||||
|
clusterSystemName = "woken"
|
||||||
|
jobServiceName = "job-service"
|
||||||
|
dockerBridgeNetwork = "MIP_PRIVATE_NETWORK"
|
||||||
|
networkInterface = "0.0.0.0"
|
||||||
|
webServicesPort = WOKEN_PORT2
|
||||||
|
|
||||||
|
master.router {
|
||||||
|
actors {
|
||||||
|
mining.limit = 5
|
||||||
|
experiment.limit = 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
basicAuth {
|
||||||
|
username = "admin"
|
||||||
|
password = "WoKeN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jobs {
|
||||||
|
node = "federation"
|
||||||
|
owner = "admin@mip.chuv.ch"
|
||||||
|
chronosServerUrl = "http://CHRONOS_HOST:CHRONOS_PORT1"
|
||||||
|
featuresDb = "DB_NAME2"
|
||||||
|
featuresTable = "cde_features_a"
|
||||||
|
resultDb = "DB_NAME3"
|
||||||
|
metaDb = "DB_NAME1"
|
||||||
|
}
|
||||||
|
|
||||||
|
db {
|
||||||
|
woken {
|
||||||
|
jdbc_driver = "org.postgresql.Driver"
|
||||||
|
jdbc_url = "jdbc:postgresql://DB_HOST:DB_PORT/DB_NAME3"
|
||||||
|
host = "DB_HOST"
|
||||||
|
port = DB_PORT
|
||||||
|
user = "DB_USER3"
|
||||||
|
password = "DB_PASSWORD3"
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
jdbc_driver = "org.postgresql.Driver"
|
||||||
|
jdbc_url = "jdbc:postgresql://DB_HOST:DB_PORT/DB_NAME2"
|
||||||
|
host = "DB_HOST"
|
||||||
|
port = DB_PORT
|
||||||
|
user = "DB_USER2"
|
||||||
|
password = "DB_PASSWORD2"
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata {
|
||||||
|
jdbc_driver = "org.postgresql.Driver"
|
||||||
|
jdbc_url = "jdbc:postgresql://DB_HOST:DB_PORT/DB_NAME1"
|
||||||
|
host = "DB_HOST"
|
||||||
|
port = DB_PORT
|
||||||
|
user = "DB_USER1"
|
||||||
|
password = "DB_PASSWORD1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# The actual Algorithm Library
|
||||||
|
algorithms {
|
||||||
|
histograms = {
|
||||||
|
dockerImage = "hbpmip/python-histograms:0.3.6"
|
||||||
|
predictive = false
|
||||||
|
}
|
||||||
|
|
||||||
|
statisticsSummary = {
|
||||||
|
dockerImage = "hbpmip/r-summary-stats:2afe249"
|
||||||
|
predictive = false
|
||||||
|
}
|
||||||
|
|
||||||
|
anova = {
|
||||||
|
dockerImage = "hbpmip/python-anova:0.3.6"
|
||||||
|
predictive = false
|
||||||
|
}
|
||||||
|
|
||||||
|
linearRegression = {
|
||||||
|
dockerImage = "hbpmip/python-linear-regression:0.0.7"
|
||||||
|
predictive = false
|
||||||
|
}
|
||||||
|
|
||||||
|
knn = {
|
||||||
|
dockerImage = "hbpmip/java-rapidminer-knn:0.2.1"
|
||||||
|
predictive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
naiveBayes = {
|
||||||
|
dockerImage = "hbpmip/java-rapidminer-naivebayes:0.2.0"
|
||||||
|
predictive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
tSNE = {
|
||||||
|
dockerImage = "hbpmip/python-tsne:0.3.3"
|
||||||
|
predictive = true
|
||||||
|
maturity = "experimental"
|
||||||
|
}
|
||||||
|
|
||||||
|
ggparci = {
|
||||||
|
dockerImage = "hbpmip/r-ggparci:0.2.0"
|
||||||
|
predictive = false
|
||||||
|
maturity = "experimental"
|
||||||
|
}
|
||||||
|
}
|
||||||
42
woken/validation.conf.in
Normal file
42
woken/validation.conf.in
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
akka {
|
||||||
|
loglevel = INFO
|
||||||
|
|
||||||
|
actor {
|
||||||
|
provider = "akka.cluster.ClusterActorRefProvider"
|
||||||
|
debug {
|
||||||
|
receive = on
|
||||||
|
autoreceive = on
|
||||||
|
lifecycle = on
|
||||||
|
fsm = on
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
remote {
|
||||||
|
maximum-payload-bytes = 10000000 bytes
|
||||||
|
enabled-transports = [ "akka.remote.netty.tcp" ]
|
||||||
|
netty.tcp {
|
||||||
|
|
||||||
|
hostname = WOKEN_VALIDATION_HOST # external (logical) hostname
|
||||||
|
port = WOKEN_VALIDATION_PORT # external (logical) port
|
||||||
|
|
||||||
|
bind-hostname = localhost # internal (bind) hostname
|
||||||
|
bind-port = WOKEN_VALIDATION_PORT # internal (bind) port
|
||||||
|
|
||||||
|
message-frame-size = 10000000b
|
||||||
|
send-buffer-size = 10000000b
|
||||||
|
receive-buffer-size = 10000000b
|
||||||
|
maximum-frame-size = 10000000b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cluster {
|
||||||
|
seed-nodes = [ "akka.tcp://woken@WOKEN_HOST:WOKEN_PORT1" ]
|
||||||
|
|
||||||
|
roles = [ "validation" ]
|
||||||
|
|
||||||
|
#role {
|
||||||
|
# woken.min-nr-of-members = 1
|
||||||
|
# validation.min-nr-of-members = 1
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user