mirror of
https://github.com/samply/bridgehead.git
synced 2026-11-07 22:36:41 +01:00
Adds the ITCC blaze data-model validator next to the uploader. It fetches
from the local Blaze over the compose network (BLAZE_URL), while the
resource links in its UI point at the browser-facing route
(PUBLIC_BLAZE_URL = Blaze's traefik /itcc-localdatamanagement mapping) —
the two URLs differ because everything external is relative to ${HOST}.
The UI is exposed like the uploader's: /itcc-validator with basic auth
(auth middleware) and strip-prefix.
110 lines
4.3 KiB
YAML
110 lines
4.3 KiB
YAML
services:
|
|
omics-endpoint:
|
|
image: samply/itcc-omics-ingest:develop
|
|
environment:
|
|
API_KEY: ${GENERATE_API_KEY}
|
|
API_PORT: "6080"
|
|
BEAM_APP_ID_LONG: omics-endpoint.${PROXY_ID}
|
|
BEAM_SECRET: ${FOCUS_BEAM_SECRET_SHORT}
|
|
BEAM_URL: http://beam-proxy:8081
|
|
BLAZE_URL: http://bridgehead-itcc-blaze:8080/fhir/
|
|
BOX_ROOT: /var/lib/itcc-maf-box
|
|
DWH_SOCKET_ID: ${DWH_SOCKET_ID}
|
|
DWH_TASK_ID: ${DWH_TASK_ID}
|
|
SITE_ID: ${SITE_ID}
|
|
ML_API_KEY: ${GENERATE_API_KEY}
|
|
ML_URL: http://bridgehead-patientlist:8080
|
|
UI_PORT: "3000"
|
|
volumes:
|
|
- "omics-maf-box:/var/lib/itcc-maf-box"
|
|
labels:
|
|
- "traefik.http.routers.omics.rule=Host(`${HOST}`) &&
|
|
PathPrefix(`/api/upload`)"
|
|
- "traefik.enable=true"
|
|
- "traefik.http.services.omics.loadbalancer.server.port=6080"
|
|
- "traefik.http.routers.omics.service=omics"
|
|
- "traefik.http.routers.omics.tls=true"
|
|
- "traefik.http.middlewares.omics-stripprefix.stripprefix.prefixes=/api"
|
|
- "traefik.http.routers.omics.middlewares=omics-stripprefix"
|
|
- "traefik.http.routers.itcc-uploader.rule=Host(`${HOST}`) && PathPrefix(`/itcc-uploader`)"
|
|
- "traefik.http.routers.itcc-uploader.service=itcc-uploader"
|
|
- "traefik.http.routers.itcc-uploader.tls=true"
|
|
- "traefik.http.services.itcc-uploader.loadbalancer.server.port=3000"
|
|
- "traefik.http.middlewares.itcc-uploader-stripprefix.stripprefix.prefixes=/itcc-uploader"
|
|
- "traefik.http.routers.itcc-uploader.middlewares=auth,itcc-uploader-stripprefix"
|
|
|
|
# Validates the local Blaze store against the ITCC core data model and shows
|
|
# the findings under https://${HOST}/itcc-validator. It fetches from Blaze
|
|
# over the compose network, while the resource links in its UI must point at
|
|
# the route the *browser* can reach: Blaze's Traefik route below maps
|
|
# /itcc-localdatamanagement onto the same store (strip-prefix + basic auth),
|
|
# so the two URLs differ and are configured separately.
|
|
blaze-validator:
|
|
image: docker.verbis.dkfz.de/cache/samply/itcc-blaze-validator:develop
|
|
environment:
|
|
# Bare base URL — the validator appends /fhir itself.
|
|
BLAZE_URL: http://bridgehead-itcc-blaze:8080
|
|
PUBLIC_BLAZE_URL: https://${HOST}/itcc-localdatamanagement
|
|
VALIDATOR_PORT: "8091"
|
|
depends_on:
|
|
- "blaze"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.itcc-validator.rule=Host(`${HOST}`) && PathPrefix(`/itcc-validator`)"
|
|
- "traefik.http.routers.itcc-validator.service=itcc-validator"
|
|
- "traefik.http.routers.itcc-validator.tls=true"
|
|
- "traefik.http.services.itcc-validator.loadbalancer.server.port=8091"
|
|
- "traefik.http.middlewares.itcc-validator-stripprefix.stripprefix.prefixes=/itcc-validator"
|
|
- "traefik.http.routers.itcc-validator.middlewares=auth,itcc-validator-stripprefix"
|
|
|
|
patientlist-db:
|
|
image: postgres:${POSTGRES_TAG}
|
|
container_name: bridgehead-patientlist-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: mainzelliste
|
|
POSTGRES_USER: ${ML_DB_USER}
|
|
POSTGRES_PASSWORD: ${PATIENTLIST_POSTGRES_PASSWORD}
|
|
volumes:
|
|
- "patientlist-db-data:/var/lib/postgresql/data"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${ML_DB_USER} -d mainzelliste"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 10s
|
|
|
|
patientlist:
|
|
image: medicalinformatics/mainzelliste:latest
|
|
container_name: bridgehead-patientlist
|
|
restart: unless-stopped
|
|
depends_on:
|
|
patientlist-db:
|
|
condition: service_healthy
|
|
environment:
|
|
ML_API_KEY: ${GENERATE_API_KEY}
|
|
ML_DB_HOST: patientlist-db
|
|
ML_DB_PORT: "5432"
|
|
ML_DB_NAME: mainzelliste
|
|
ML_DB_USER: ${ML_DB_USER}
|
|
ML_DB_PASS: ${PATIENTLIST_POSTGRES_PASSWORD}
|
|
ML_DB_DRIVER: org.postgresql.Driver
|
|
ML_DB_TYPE: postgresql
|
|
ML_LOG_LEVEL: INFO
|
|
ML_ALLOWEDREMOTEADDRESSES: "127.0.0.1,::1,172.16.0.0/12"
|
|
|
|
secrets:
|
|
- mainzelliste.docker.conf
|
|
- source: symmetric_key
|
|
target: /etc/resources/keys/symmetric_key.json
|
|
|
|
volumes:
|
|
omics-maf-box:
|
|
patientlist-db-data:
|
|
secrets:
|
|
mainzelliste.docker.conf:
|
|
file: /etc/bridgehead/mainzelliste/mainzelliste.docker.conf
|
|
|
|
symmetric_key:
|
|
file: /var/bridgehead/mainzelliste/keyset_siv.json
|