Files
I-Form_Research_Server_Stack/frontend.yaml
2024-01-12 19:00:38 +00:00

171 lines
4.3 KiB
YAML

version: "3.8"
services:
# This service runs a grafana instance for hosting dashboards
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
volumes:
- stack_grafana:/var/lib/grafana
deploy:
replicas: 1
restart_policy:
condition: on-failure
networks:
i-form_research_server_stack:
ipv4_address: "172.252.1.12"
labels:
- "traefik.enable=true"
- "traefik.http.routers.go.rule=Path(`/`)"
- "traefik.http.services.go.loadbalancer.server.port=3000"
# Then, we add neodash as a service that can be used to visualize the neo4j database
# This should provide the real AI assisted punching power for this stack
neodash:
image: neo4jlabs/neodash:latest
depends_on:
- neo4j
ports:
- "5005:5005"
deploy:
replicas: 1
restart_policy:
condition: on-failure
networks:
i-form_research_server_stack:
ipv4_address: "172.252.1.13"
labels:
- "traefik.enable=true"
- "traefik.http.routers.go.rule=Path(`/`)"
- "traefik.http.services.go.loadbalancer.server.port=5005"
# Lastly, we need a LIMS system, but we're not sure which one to use yet
# As a test, we'll run senaite, with elabftw for lab notebook functionality
senaite:
image: senaite/senaite:edge
ports:
- "8082:8080"
volumes:
- stack_senaite:/data
networks:
i-form_research_server_stack:
ipv4_address: "172.252.1.14"
labels:
- "traefik.enable=true"
- "traefik.http.routers.go.rule=Path(`/`)"
- "traefik.http.services.go.loadbalancer.server.port=8080"
# We also need to add a service for the elabftw instance and its database
elabftw:
image: elabftw/elabimg:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- FOWNER
- DAC_OVERRIDE
secrets:
- elabftw_sql_key
- elabftw_secret_key
environment:
SECRET_KEY: $${cat /run/secrets/elabftw_secret_key}
DB_HOST: "backend_mysql" # "172.252.1.7"
DB_PORT: "3306"
DB_NAME: "elabftw"
DB_USER: "elabftw"
DB_PASSWORD: "test" # "/run/secrets/elabftw_sql_key"
# - DB_PASSWORD=$$DB_PASSWORD
# DB_CERT_PATH: "/mysql-cert/cert.pem"
PHP_TIMEZONE: "Europe/Paris"
TZ: "Europe/Paris"
SERVER_NAME: "I-Form eLabFTW"
SITE_URL: "127.0.0.1:443" # "elab.i-form.ie"
# DISABLE_HTTPS: 1
ENABLE_LETSENCRYPT: 0
ports:
- "443:443"
volumes:
- stack_elabftw_uploads:/elabftw/uploads
- stack_elabftw_var:/var/elabftw
- stack_elabftw_etc:/etc/elabftw
# if you have enabled letsencrypt, uncomment the line below
# path to the folder with TLS certificate + private key
# host:container
#- /etc/letsencrypt:/ssl
networks:
i-form_research_server_stack:
ipv4_address: "172.252.1.15"
labels:
- "traefik.enable=true"
- "traefik.http.routers.go.rule=Path(`/`)"
- "traefik.http.services.go.loadbalancer.server.port=443"
networks:
i-form_research_server_stack:
external: true
volumes:
stack_rsync_run:
external: true
stack_rsync_log:
external: true
stack_rsync_etc:
external: true
stack_traefik:
external: true
stack_letsencrypt:
external: true
stack_coredns:
external: true
stack_web:
external: true
stack_grafana:
external: true
stack_dataverse:
external: true
stack_dataverse_db:
external: true
stack_dataverse_secrets:
external: true
stack_dataverse_solr_data:
external: true
stack_dataverse_triggers:
external: true
stack_dataverse_solr:
external: true
stack_dataverse_minio:
external: true
stack_dataverse_config:
external: true
stack_dataverse_schema:
external: true
stack_dataverse_init:
external: true
stack_dataverse_data:
external: true
stack_dataverse_docroot:
external: true
stack_neo4j:
external: true
stack_senaite:
external: true
stack_elabftw_uploads:
external: true
stack_elabftw_var:
external: true
stack_elabftw_etc:
external: true
stack_elabftw_sql:
external: true
secrets:
elabftw_sql_key:
external: true
elabftw_secret_key:
external: true
dataverse_postgres_key:
external: true