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