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