1
0

Compare commits

...

85 Commits

Author SHA1 Message Date
Sido Haakma
18d77c6dfe Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-04-20 11:37:20 +00:00
sido
e78178722c feat(docker-compose): migrate to nfs 2018-04-20 13:36:33 +02:00
Sido Haakma
4746ecbb4a Merge branch 'add-health-checks' of p281392/molgenis-ops-rancher into master 2018-04-20 06:29:17 +00:00
sido
eff463e31a chore(docker-compose): set back env variables 2018-04-20 07:47:42 +02:00
Sido Haakma
00613a2a0f Merge branch 'add-docker-registry-port' of p281392/molgenis-ops-rancher into master 2018-04-20 05:43:28 +00:00
sido
a71d50ceaa fix(docker-compose): add docker registry port 2018-04-20 07:39:49 +02:00
sido
fb8b199d95 fix(docker-compose): use other jenkins image 2018-04-19 20:35:57 +02:00
sido
82a074b189 feat(docker-compose): use other image 2018-04-19 20:27:05 +02:00
sido
4d8f904d86 feat(docker-compose): add helath checks 2018-04-19 13:29:09 +02:00
Sido Haakma
8cbb6bf0b4 Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-17 10:02:07 +00:00
sido
8d4d34e41a fix(docker-compose): use other jenkins image 2018-04-17 12:01:03 +02:00
Sido Haakma
c28d870ad0 Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-17 07:04:20 +00:00
sido
3a3d9e5903 fix(docker-compose): remove env from jenkins and updated nexus driver 2018-04-17 09:02:54 +02:00
Sido Haakma
74dc18414e Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-16 14:46:52 +00:00
sido
ddfe409abf fix(docker-compose): update volume to relative name 2018-04-16 16:43:11 +02:00
sido
1d47094927 fix(docker-compose): updated nexus with mount options 2018-04-16 16:37:27 +02:00
sido
f5646a5396 fix(docker-compose): open port 22 to connect to jenkins master 2018-04-12 21:08:43 +02:00
Sido Haakma
6bda88bf1e Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-12 20:53:59 +02:00
sido
fa26c9a393 chore(docker-compose): moved back to local drivers 2018-04-12 20:52:55 +02:00
Sido Haakma
041082f058 Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-12 20:46:55 +02:00
sido
ed85813dbc fix(docker-compose): removed mntOptions 2018-04-12 20:45:39 +02:00
Sido Haakma
604de7be26 Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-12 20:41:09 +02:00
sido
b33bcf22c6 feat(jenkins): give mntOptions for root squashing 2018-04-12 19:31:48 +02:00
Sido Haakma
0094cfaa17 Merge branch 'update-to-molgenis-registry' of p281392/molgenis-ops-rancher into master 2018-04-12 19:05:27 +02:00
sido
56b6876ed8 feat(jenkins): give mntOptions for jenkins user uid 2018-04-12 19:03:50 +02:00
sido
d39745a316 feat(docker-compose): moved to molgenis registry 2018-04-11 09:15:25 +02:00
Sido Haakma
2eb6b2b19b Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 23:27:14 +02:00
sido
b856607eca fix(docker-compose): updated volume names 2018-04-10 23:26:44 +02:00
Sido Haakma
82e7e713ba Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 23:06:59 +02:00
sido
e95a6873e7 fix(docker-compose): add nfs support for nexus 2018-04-10 23:06:22 +02:00
Sido Haakma
68b5964b2c Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 23:03:30 +02:00
sido
869a70070b feat(jenkins): moved to nfs storage for jenkins and nexus 2018-04-10 23:02:39 +02:00
Sido Haakma
58d943603d Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 22:22:10 +02:00
sido
474bdb4496 fix(docker-compose.yml): update service name 2018-04-10 22:15:13 +02:00
Sido Haakma
72258ca87c Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 22:13:45 +02:00
sido
02aabd3792 fix(rancher-compose.yml): updated questions 2018-04-10 22:12:54 +02:00
Sido Haakma
28f3b7ccc5 Merge branch 'add-nexus-support' of p281392/molgenis-ops-rancher into master 2018-04-10 22:08:09 +02:00
sido
8ba7d05f9c feat(nexus): add nexus support 2018-04-10 22:05:47 +02:00
Sido Haakma
4b5f0fd476 Merge branch 'add-jenkins' of p281392/molgenis-ops-rancher into master 2018-04-05 21:13:11 +02:00
sido
0304d00b05 chore(prometheus): removed prometheus from add-jenkins branch 2018-03-27 10:09:07 +02:00
Sido Haakma
2afa07dc2a Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-23 15:12:20 +01:00
sido
6ed19d1777 fix(volume): map molgenis home directory to volume 2018-03-23 14:58:52 +01:00
sido
510e86b130 chore(molgenis.home): updated default value 2018-03-23 14:34:40 +01:00
Sido Haakma
64b93d375c Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-23 14:10:59 +01:00
sido
5bfde40628 chore(flow): added flow to project 2018-03-23 14:07:19 +01:00
sido
8ffc5745db feat(jenkins): added jenkins build servers 2018-03-23 08:50:38 +01:00
sido
6246828433 fix(docker-compose): added environment variables 2018-03-22 08:49:37 +01:00
Sido Haakma
d9e5e62be0 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 23:07:19 +01:00
sido
9ac3fe1439 fix(docker-compose): fix molgenis admin password 2018-03-17 23:06:40 +01:00
sido
caf4feb06f fix(rancher-compose): fixed versioning 2018-03-17 22:49:08 +01:00
Sido Haakma
984437d2e6 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 22:30:04 +01:00
sido
56653bf9b1 fix(docker-compose): turn off global scheduling 2018-03-17 22:29:32 +01:00
Sido Haakma
3ba33df854 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 22:24:09 +01:00
sido
bb0c6d2597 feat(docker-compose): updated all volumes to local drivers 2018-03-17 22:23:23 +01:00
Sido Haakma
52ef079d0c Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 22:09:27 +01:00
sido
9334c55e04 feat(docker-compose): updated docker-compose with volumes 2018-03-17 22:08:07 +01:00
Sido Haakma
9ea048e7c4 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 22:00:03 +01:00
sido
747809d5a2 fixc(rancher-compose): updated questions and added them into docker-compose 2018-03-17 21:59:29 +01:00
Sido Haakma
daf0489269 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 21:50:02 +01:00
sido
2b2aabddce fix(docker-compose) added services tag 2018-03-17 21:49:33 +01:00
Sido Haakma
aa9f4f20ea Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-17 21:43:16 +01:00
sido
687cd33d9d chore(docker-compose): updated services names 2018-03-17 21:42:53 +01:00
sido
9f5f3f0806 feat(docker-compose): moved back to volume mappings 2018-03-17 21:34:02 +01:00
Sido Haakma
ad37c534f6 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-15 10:10:57 +01:00
sido
6177319164 chore(docker-compose): add schema name and clustername to variable list 2018-03-15 10:09:50 +01:00
Sido Haakma
67323a5917 Merge branch 'add-latest-and-stable' of p281392/molgenis-ops-rancher into master 2018-03-15 07:47:52 +01:00
sido
5965a184a8 fix(docker-compose): added admin.password 2018-03-15 00:27:48 +01:00
sido
cb70fb6982 fix(docker-compose): replaced latest and stable at the right compose file 2018-03-15 00:25:21 +01:00
sido
f832f9806e chore(0 and 1): added latest and stable tag 2018-03-15 00:20:13 +01:00
Sido Haakma
1056e442c3 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-13 10:25:49 +01:00
sido
fcac809118 fix(docker-compose): updated indenting for opencpu 2018-03-13 10:25:17 +01:00
Sido Haakma
34b9b9cfc8 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-13 10:22:11 +01:00
sido
daed363e62 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-rancher 2018-03-13 10:21:06 +01:00
sido
b736e0537b fix(docker-compose): replaced : with = 2018-03-13 10:20:57 +01:00
sido
bd50d4b931 fix(docker-compose): added environment properties to start molgenis 2018-03-13 10:20:20 +01:00
Sido Haakma
d8a1233fd3 Merge branch 'master' of p281392/molgenis-ops-rancher into master 2018-03-11 23:04:50 +01:00
sido
5bc0fdef43 fix(docker-compose.yml): updated registries for opencpu and postgres (2.0.1) 2018-03-11 22:58:14 +01:00
sido
1120395003 fix(docker-compose): fixed version numbers 2018-03-10 22:00:52 +01:00
sido
40b912ff00 feat(added new versions): added version 6 and 7 to the molgenis catalogue 2018-03-10 12:25:59 +01:00
sido
9682aa79c5 fix(traefik environment): added labels for traefik 2018-03-09 10:46:39 +01:00
sido
49f38cf8da fix(added options): added domain options to catalogue 2018-03-09 08:14:43 +01:00
sido
3fb94926a2 fix(added version 6): added version 6 to catalogue 2018-03-09 08:03:13 +01:00
sido
614e32990c fix(docker-compose.yml): updated elastic search memory settings 2018-03-08 17:44:02 +01:00
sido
9b0ec0aa54 fix(docker-compose.yml): updated docker registry 2018-03-08 17:29:01 +01:00
sido
c3a4827c83 refactor(readme and compose): updated readmes and compose files 2018-03-08 17:21:41 +01:00
33 changed files with 3338 additions and 187 deletions

View File

@ -0,0 +1,12 @@
# Rancher
We use docker-compose.yml files to specify a version-range to deploy a MOLGENIS-stack
## Configuration
Exmaple
```bash
molgenis:
image: registry.webhosting.rug.nl/molgenis-docker:5.2.0
```

View File

@ -0,0 +1,17 @@
# Jenkins for MOLGENIS
Flexible software for scientific data
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- Jenkins
- Jenkins Agent - Development tools
## Usage
- Select Jenkins from catalog
- Fill in the questions in the template area
- Click *Launch*
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -0,0 +1,41 @@
version: '2.1'
services:
jenkins-master:
image: jenkinsci/blueocean:latest
ports:
- 8080
- 50000
volumes:
- molgenis-jenkins:/var/jenkins_home
restart: always
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
healthcheck:
test: ["CMD", "curl", "-sS", "http://localhost:50000" ]
interval: 5s
timeout: 10s
retries: 5
jenkins-agent-maven:
image: registry.molgenis.org/docker-molgenis-ops-releases/jenkins-agent-buildtools:lts
environment:
- JENKINS_URL=http://localhost:8080
- JENKINS_SECRET=paradoxa
- JENKINS_AGENT_NAME=buildtools
volumes:
- molgenis-jenkins-agent-buildtools:/var/jenkins_home
depends_on:
jenkins-master:
condition: service_healthy
restart: always
volumes:
molgenis-jenkins:
driver: rancher-nfs
molgenis-jenkins-agent-buildtools:
driver: rancher-nfs

View File

@ -0,0 +1,18 @@
.catalog:
name: jenkins
version: latest
description: Jenkins for Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -0,0 +1,7 @@
name: Jenkins
description: |
Jenkins for Molgenis
version: v1.0.0
category: All
maintainer: Molgenis DEVOPS-team
projectURL: https://jenkins.io

View File

@ -1,17 +1,21 @@
# MOLGENIS
### Flexible software for scientific data
#### Process, manage, query, annotate, integrate, analyse, share
Flexible software for scientific data
This template creates a MOLGENIS stack on top of Rancher. It creates 3 docker services:
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS instance
- Postgress instance
- ElasticSearch instance
## Usage:
- MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
## Usage
- Select MOLGENIS from catalog
- Enter the name of the replica set
- Click deploy
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.
MOLGENIS can now be accessed over the Rancher network.

View File

@ -1,22 +1,82 @@
app:
image: sidohaakma/molgenis-docker:2.0.0
ports:
- 8081:8080
links:
- db
volumes:
- app-data:/opt/molgenis
labels:
io.rancher.container.create_agent: 'true'
io.rancher.scheduler.global: 'true'
db:
build: ./db
expose:
- 5432
volumes:
- db-data:/var/lib/postgresql/data
labels:
io.rancher.container.create_agent: 'true'
version: '2'
services:
molgenis:
image: registry.molgenis.org/molgenis/molgenis:latest
ports:
- 8080
links:
- postgres
- elasticsearch
volumes:
- molgenis-data:/opt/molgenis
environment:
- "db_uri=jdbc:postgresql://postgres/${DB_SCHEME}?reWriteBatchedInserts=true&autosave=CONSERVATIVE"
- "db_driver=org.postgresql.Driver"
- "db_user=${DB_USERNAME}"
- "db_password=${DB_PASSWORD}"
- "molgenis.home=/opt/molgenis"
- "admin.password=${MOLGENIS_ADMIN_PASSWORD}"
- "opencpu.uri.port=8004"
- "elasticsearch.cluster.name=${ELASTIC_CLUSTER}"
- "elasticsearch.transport.addresses=elasticsearch:9300"
- "JAVA_OPTS=-Xmx${JVM_MEM_POOL} -Xms${JVM_MEM_POOL} -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_SCHEME}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data
ports:
- 5432
healthcheck:
test: ["CMD", "curl", "sS", "http://localhost:8080"]
interval: 5s
timeout: 10s
retries: 5
opencpu:
image: registry.molgenis.org/molgenis/molgenis-opencpu:latest
ports:
- 8004
healthcheck:
test: ["CMD", "curl", "sS", "http://localhost:8084"]
interval: 5s
timeout: 10s
retries: 5
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=${ELASTIC_CLUSTER}"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
- 9300
volumes:
- elastic-data
volumes:
db-data:
app-data:
postgres-data:
driver: local
molgenis-data:
driver: local
elastic-data:
driver: local

View File

@ -1,5 +1,54 @@
.catalog:
name: molgenis
version: v2.0.0
version: latest
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
- variable: "DB_SCHEME"
description: "Name of the database scheme"
label: "Database scheme:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_USERNAME"
description: "Name of the database username"
label: "Database username:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_PASSWORD"
description: "Password of the database user"
label: "Database password:"
required: true
default: "molgenis"
type: "string"
- variable: "MOLGENIS_ADMIN_PASSWORD"
description: "Passowrd the MOLGENIS admin"
label: "MOLGENIS admin user password:"
required: true
default: "admin"
type: "string"
- variable: "ELASTIC_CLUSTER"
description: "Name of the elasticsearch cluster"
label: "Cluster:"
required: true
default: "molgenis"
type: "string"
- variable: "JVM_MEM_POOL"
description: "Specifies the initial and maximum size, in bytes, of the memory allocation pool."
label: "Initial and maximum size:"
required: true
default: "2g"
type: "string"

View File

@ -1,18 +1,21 @@
# MOLGENIS
**Flexible software for scientific data**
Flexible software for scientific data
This template creates a MOLGENIS stack on top of Rancher. It creates 3 docker services:
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS
- Elasticsearch is packaged with MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
**Usage:**
## Usage
- Select MOLGENIS from catalog
- The stack-name must not be altered (this is hardcoded in de docker-compose file)
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network.
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -1,45 +1,69 @@
app:
image: sidohaakma/molgenis-docker:4.1.0
ports:
- 8081:8080
links:
- db
volumes_from:
- molgenis-data
labels:
io.rancher.sidekicks: molgenis-data
io.rancher.scheduler.global: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
db:
version: '2'
services:
molgenis:
image: registry.webhosting.rug.nl/molgenis/molgenis:stable
ports:
- 8080
links:
- postgres
- elasticsearch
volumes:
- molgenis-data
environment:
- "db_uri=jdbc:postgresql://postgres/${DB_SCHEME}?reWriteBatchedInserts=true&autosave=CONSERVATIVE"
- "db_driver=org.postgresql.Driver"
- "db_user=${DB_USERNAME}"
- "db_password=${DB_PASSWORD}"
- "admin.password=${MOLGENIS_ADMIN_PASSWORD}"
- "elasticsearch.cluster.name=${ELASTIC_CLUSTER}"
- "elasticsearch.transport.addresses=elasticsearch:9300"
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=molgenis
- POSTGRES_PASSWORD=molgenis
- POSTGRES_DB=molgenis
expose:
- 5432
volumes_from:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_SCHEME}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data
labels:
io.rancher.sidekicks: postgres-data
io.rancher.scheduler.global: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
ports:
- 5432
postgres-data:
image: busybox
labels:
io.rancher.container.start_once: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
opencpu:
image: registry.webhosting.rug.nl/molgenis/molgenis-opencpu:stable
ports:
- 8004
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=${ELASTIC_CLUSTER}"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
- 9300
volumes:
- /var/lib/postgresql/data/pgdata
- elastic-data
volumes:
postgres-data:
driver: local
molgenis-data:
image: busybox
labels:
io.rancher.container.start_once: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
volumes:
- /opt/molgenis
driver: local
elastic-data:
driver: local

View File

@ -1,5 +1,58 @@
.catalog:
name: molgenis
version: v4.1.0
version: stable
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
- variable: "DB_SCHEME"
description: "Name of the database scheme"
label: "Database scheme:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_USERNAME"
description: "Name of the database username"
label: "Database username:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_PASSWORD"
description: "Password of the database user"
label: "Database password:"
required: true
default: "molgenis"
type: "string"
- variable: "MOLGENIS_ADMIN_PASSWORD"
description: "Passowrd the MOLGENIS admin"
label: "MOLGENIS admin user password:"
required: true
default: "admin"
type: "string"
- variable: "ELASTIC_CLUSTER"
description: "Name of the elasticsearch cluster"
label: "Cluster:"
required: true
default: "molgenis"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -1,18 +1,21 @@
# MOLGENIS
**Flexible software for scientific data**
Flexible software for scientific data
This template creates a MOLGENIS stack on top of Rancher. It creates 3 docker services:
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
**Usage:**
## Usage
- Select MOLGENIS from catalog
- The stack-name must not be altered (this is hardcoded in de docker-compose file)
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network.
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -1,85 +1,27 @@
services:
molgenis:
image: sidohaakma/molgenis-docker:5.2.0
image: registry.webhosting.rug.nl/molgenis:2.0.1
ports:
- 8081:8080
- 8080
links:
- postgres
- elasticsearch
volumes_from:
- molgenis-data
- db
volumes:
- molgenis-data:/opt/molgenis
labels:
io.rancher.sidekicks: molgenis-data
io.rancher.scheduler.global: true
io.rancher.container.pull_image: always
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=molgenis
- POSTGRES_PASSWORD=molgenis
- POSTGRES_DB=molgenis
- PGDATA=/var/lib/postgresql/data/pgdata
volumes_from:
- postgres-data
ports:
- 5432
labels:
io.rancher.sidekicks: postgres-data
io.rancher.scheduler.global: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=molgenis"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
# volumes_from:
# - elasticsearch-data
ports:
- 9200:9200
- 9300:9300
labels:
#io.rancher.sidekicks: elasticsearch-data
io.rancher.scheduler.global: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
# loadbalancer:
# image: rancher/lb-service-haproxy:v0.7.5
# ports:
# - 80
# labels:
# io.rancher.scheduler.global: true
# io.rancher.scheduler.affinity:host_label: type=molgenis
# io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: registry.webhosting.rug.nl/molgenis-postgres:2.0.1
expose:
- 5432
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
image: busybox
labels:
io.rancher.container.start_once: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
volumes:
- /var/lib/postgresql/data/pgdata
driver: local
molgenis-data:
image: busybox
labels:
io.rancher.container.start_once: true
io.rancher.scheduler.affinity:host_label: type=molgenis
io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
volumes:
- /opt/molgenis
# elasticsearch-data:
# image: busybox
# labels:
# io.rancher.container.start_once: true
# io.rancher.scheduler.affinity:host_label: type=molgenis
# io.rancher.scheduler.affinity:container_label: io.rancher.stack.name=molgenis
# volumes:
# - /usr/share/elasticsearch/data
driver: local

View File

@ -1,18 +1,28 @@
.catalog:
name: molgenis
version: v5.0.0
version: v2.0.0
description: Molgenis
minimum_rancher_version: v1.6.3
#loadbalancer:
# scale: 1
# lb_config:
# port_rules:
# - source_port: 80
# target_port: 8081
# service: molgenis
# health_check:
# port: 42
# interval: 2000
# unhealthy_threshold: 3
# healthy_threshold: 2
# response_timeout: 2000
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -0,0 +1,17 @@
# MOLGENIS
Flexible software for scientific data
## Rancher configuration
This template creates a MOLGENIS stack on top of Rancher. It creates 3 docker services:
- MOLGENIS
- Elasticsearch is packaged with MOLGENIS
- Postgress
## Usage
- Select MOLGENIS from catalog
- The stack-name must not be altered (this is hardcoded in de docker-compose file)
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network.

View File

@ -0,0 +1,32 @@
version: '2'
services:
molgenis:
image: registry.webhosting.rug.nl/molgenis/molgenis:4.1.0
ports:
- 8080
links:
- postgres
volumes:
- molgenis-data
labels:
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=molgenis
- POSTGRES_PASSWORD=molgenis
- POSTGRES_DB=molgenis
expose:
- 5432
volumes:
- postgres-data
volumes:
molgenis-data:
driver: local
postgres-data:
driver: local

View File

@ -0,0 +1,28 @@
.catalog:
name: molgenis
version: v4.1.0
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -0,0 +1,21 @@
# MOLGENIS
Flexible software for scientific data
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
## Usage
- Select MOLGENIS from catalog
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -0,0 +1,68 @@
version: '2'
services:
molgenis:
image: registry.webhosting.rug.nl/molgenis/molgenis:5.2.0
ports:
- 8080
links:
- postgres
- elasticsearch
volumes:
- molgenis-data
environment:
- "db_uri=jdbc:postgresql://postgres/${DB_SCHEME}?reWriteBatchedInserts=true&autosave=CONSERVATIVE"
- "db_driver=org.postgresql.Driver"
- "db_user=${DB_USERNAME}"
- "db_password=${DB_PASSWORD}"
- "admin.password=${MOLGENIS_ADMIN_PASSWORD}"
- "elasticsearch.cluster.name=${ELASTIC_CLUSTER}"
- "elasticsearch.transport.addresses=elasticsearch:9300"
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_SCHEME}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data
ports:
- 5432
opencpu:
image: registry.webhosting.rug.nl/molgenis/molgenis-opencpu:5.2.0
ports:
- 8004
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=${ELASTIC_CLUSTER}"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
- 9300
volumes:
- elastic-data
volumes:
postgres-data:
driver: local
molgenis-data:
driver: local
elastic-data:
driver: local

View File

@ -0,0 +1,58 @@
.catalog:
name: molgenis
version: v5.2.0
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
- variable: "DB_SCHEME"
description: "Name of the database scheme"
label: "Database scheme:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_USERNAME"
description: "Name of the database username"
label: "Database username:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_PASSWORD"
description: "Password of the database user"
label: "Database password:"
required: true
default: "molgenis"
type: "string"
- variable: "MOLGENIS_ADMIN_PASSWORD"
description: "Passowrd the MOLGENIS admin"
label: "MOLGENIS admin user password:"
required: true
default: "admin"
type: "string"
- variable: "ELASTIC_CLUSTER"
description: "Name of the elasticsearch cluster"
label: "Cluster:"
required: true
default: "molgenis"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -0,0 +1,21 @@
# MOLGENIS
Flexible software for scientific data
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
## Usage
- Select MOLGENIS from catalog
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -0,0 +1,68 @@
version: '2'
services:
molgenis:
image: registry.webhosting.rug.nl/molgenis/molgenis:6.0.0
ports:
- 8080
links:
- postgres
- elasticsearch
volumes:
- molgenis-data
environment:
- "db_uri=jdbc:postgresql://postgres/${DB_SCHEME}?reWriteBatchedInserts=true&autosave=CONSERVATIVE"
- "db_driver=org.postgresql.Driver"
- "db_user=${DB_USERNAME}"
- "db_password=${DB_PASSWORD}"
- "admin.password=${MOLGENIS_ADMIN_PASSWORD}"
- "elasticsearch.cluster.name=${ELASTIC_CLUSTER}"
- "elasticsearch.transport.addresses=elasticsearch:9300"
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_SCHEME}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data
ports:
- 5432
opencpu:
image: registry.webhosting.rug.nl/molgenis/molgenis-opencpu:6.0.0
ports:
- 8004
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=${ELASTIC_CLUSTER}"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
- 9300
volumes:
- elastic-data
volumes:
postgres-data:
driver: local
molgenis-data:
driver: local
elastic-data:
driver: local

View File

@ -0,0 +1,58 @@
.catalog:
name: molgenis
version: v6.0.0
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
- variable: "DB_SCHEME"
description: "Name of the database scheme"
label: "Database scheme:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_USERNAME"
description: "Name of the database username"
label: "Database username:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_PASSWORD"
description: "Password of the database user"
label: "Database password:"
required: true
default: "molgenis"
type: "string"
- variable: "MOLGENIS_ADMIN_PASSWORD"
description: "Passowrd the MOLGENIS admin"
label: "MOLGENIS admin user password:"
required: true
default: "admin"
type: "string"
- variable: "ELASTIC_CLUSTER"
description: "Name of the elasticsearch cluster"
label: "Cluster:"
required: true
default: "molgenis"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -0,0 +1,21 @@
# MOLGENIS
Flexible software for scientific data
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- MOLGENIS
- MOLGENIS-OpenCPU
- Postgress
- ElasticSearch
## Usage
- Select MOLGENIS from catalog
- Fill in the questions in the template area
- Click *Launch*
MOLGENIS can now be accessed over the Rancher network on the domains you specified.
## Loadbalancers
You can check lb.molgenis.org to check the availabity of the stack.

View File

@ -0,0 +1,68 @@
version: '2'
services:
molgenis:
image: registry.webhosting.rug.nl/molgenis/molgenis:7.0.0
ports:
- 8080
links:
- postgres
- elasticsearch
volumes:
- molgenis-data
environment:
- "db_uri=jdbc:postgresql://postgres/${DB_SCHEME}?reWriteBatchedInserts=true&autosave=CONSERVATIVE"
- "db_driver=org.postgresql.Driver"
- "db_user=${DB_USERNAME}"
- "db_password=${DB_PASSWORD}"
- "admin.password=${MOLGENIS_ADMIN_PASSWORD}"
- "elasticsearch.cluster.name=${ELASTIC_CLUSTER}"
- "elasticsearch.transport.addresses=elasticsearch:9300"
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8080
postgres:
image: postgres:9.6-alpine
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_SCHEME}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data
ports:
- 5432
opencpu:
image: registry.webhosting.rug.nl/molgenis/molgenis-opencpu:7.0.0
ports:
- 8004
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1
environment:
- "cluster.name=${ELASTIC_CLUSTER}"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
- 9300
volumes:
- elastic-data
volumes:
postgres-data:
driver: local
molgenis-data:
driver: local
elastic-data:
driver: local

View File

@ -0,0 +1,58 @@
.catalog:
name: molgenis
version: v7.0.0
description: Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
- variable: "DB_SCHEME"
description: "Name of the database scheme"
label: "Database scheme:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_USERNAME"
description: "Name of the database username"
label: "Database username:"
required: true
default: "molgenis"
type: "string"
- variable: "DB_PASSWORD"
description: "Password of the database user"
label: "Database password:"
required: true
default: "molgenis"
type: "string"
- variable: "MOLGENIS_ADMIN_PASSWORD"
description: "Passowrd the MOLGENIS admin"
label: "MOLGENIS admin user password:"
required: true
default: "admin"
type: "string"
- variable: "ELASTIC_CLUSTER"
description: "Name of the elasticsearch cluster"
label: "Cluster:"
required: true
default: "molgenis"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -1,7 +1,7 @@
name: Molgenis
description: |
Molgenis | Flexible software for scientific data
version: v5.0.0
version: latest
category: All
maintainer: Molgenis DEV-team and community-members
projectURL: http://molgenis.org
projectURL: https://www.molgenis.org

View File

@ -0,0 +1,16 @@
# Nexus for MOLGENIS
Flexible software for scientific data
## Rancher configuration
These templates can create a range of MOLGENIS stacks on top of Rancher. The latests and stable release serves 4 docker services:
- Nexus
## Usage
- Select Nexus from catalog
- Fill in the questions in the template area
- Click *Launch*
## Loadbalancers
You can check lb.molgenis.org to check the availability of the stack.

View File

@ -0,0 +1,20 @@
version: '2'
services:
nexus:
image: sonatype/nexus3:latest
ports:
- 8081
- 5000
volumes:
- molgenis-nexus-data:/nexus-data
labels:
io.rancher.container.pull_image: always
traefik.frontend.rule: Host:${DOMAINS}
traefik.backend: ${TRAEFIK_BACKEND}
traefik.enable: true
traefik.port: 8081
volumes:
molgenis-nexus-data:
driver: rancher-nfs

View File

@ -0,0 +1,28 @@
.catalog:
name: nexus
version: latest
description: Nexus for Molgenis
minimum_rancher_version: v1.6.3
questions:
- variable: "DOMAINS"
description: "Domain you want to use (comma seperated)"
label: "Domains:"
required: true
default: "test.molgenis.org,test.dcktest.gcc.rug.nl"
type: "string"
- variable: "TRAEFIK_BACKEND"
description: "Name of the server when added to loadbalancer"
label: "Traefik backend:"
required: true
default: "test.molgenis.org"
type: "string"
start_on_create: true
scale: 1
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@ -0,0 +1,551 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="264px" viewBox="0 0 500 264" enable-background="new 0 0 500 264" xml:space="preserve"> <image id="image0" width="500" height="264" x="0" y="0"
xlink:href="data:image/png;base64,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
7wAAAABJRU5ErkJggg==" />
</svg>

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,7 @@
name: Nexus
description: |
Nexus for Molgenis
version: v1.0.0
category: All
maintainer: Molgenis DEVOPS-team
projectURL: https://www.sonatype.com/nexus-repository-oss