Files
bridgehead/ccp/modules/ovis-compose.yml
2026-03-23 11:34:55 +01:00

174 lines
7.8 KiB
YAML

version: "3.7"
services:
mongo:
image: mongo:latest
container_name: bridgehead-ccp-ovis-mongo
restart: always
command: mongod
volumes:
- /var/cache/bridgehead/ccp/ovis/mongo/init/init.js:/docker-entrypoint-initdb.d/init.js:ro
ovis-backend-data-preprocessing:
image: docker.verbis.dkfz.de/ovis/ovis-backend-preprocessor:latest
container_name: bridgehead-ccp-ovis-preprocessing
restart: on-failure
user: root
working_dir: /app
environment:
APOLLO_PORT: "4001"
CREDOS_PORT: "4000"
HTTP_PROXY: ""
HTTPS_PROXY: ""
NO_PROXY: ""
http_proxy: ""
https_proxy: ""
no_proxy: ""
CORS_ORIGIN: "*"
DB: onc_test
ADRESS: mongodb://mongo:27017
MONGO_VER: latest
OVIS_PREPROC_DECEASED_KEYWORDS: '["verstorben","dead","deceased","not alive","gestorben"]'
OVIS_PREPROC_REZIDIV_PREFIXES: '["Rezidiv"]'
OVIS_PREPROC_REZIDIV_CANONICAL: Rezidiv
OVIS_PREPROC_REZIDIV_LYMPH_STATES: '["Rezidiv","Neu"]'
OVIS_PREPROC_PROGRESS_LABELS: '["Progression","Divergentes Geschehen","Rezidiv"]'
OVIS_PREPROC_COMPLETE_REMISSION_LABELS: '["Vollremission / Tumorfrei (complete remission)"]'
OVIS_PREPROC_RCLASS_SUCCESS: '["R0"]'
OVIS_PREPROC_LOCAL_RSTATE_SUCCESS: '["R0"]'
OVIS_PREPROC_METASTASIS_PREFIXES: '["Rezidiv","Neu"]'
OVIS_PREPROC_METASTASIS_SPREAD_VALUES: '["Neu","Rezidiv","Tumornachweis"]'
OVIS_PREPROC_METASTASIS_STRAT_SYNCHRON: Synchrone Metastasierung
OVIS_PREPROC_METASTASIS_STRAT_NONE: keine synchrone Metastasierung
OVIS_PREPROC_NULL_STUDY_PHASES: '["NOPH","KA"]'
OVIS_PREPROC_PREV_THERAPY_SURGERY: '["operation"]'
OVIS_PREPROC_PREV_THERAPY_SYSTEMIC: '["systemic"]'
OVIS_PREPROC_PREV_THERAPY_RADIATION: '["radiation"]'
OVIS_PREPROC_PREV_CONSULTATION_NUTRITION: '["nutrition"]'
OVIS_PREPROC_PREV_CONSULTATION_SOCIAL: '["social"]'
OVIS_PREPROC_PREV_CONSULTATION_PSYCHO: '["psycho"]'
OVIS_PREPROC_PREV_CONSULTATION_GENETIC: '["genetic"]'
OVIS_PREPROC_TUMORBOARD_PATTERN_PRAE: prae|prä|pre
OVIS_PREPROC_TUMORBOARD_PATTERN_POST: post
OVIS_PREPROC_TUMORBOARD_PATTERN_MTB: mtb
OVIS_PREPROC_ECOG_PREFIX: ECOG
OVIS_PREPROC_DISTRESS_TYPE: distress
OVIS_PREPROC_DISTRESS_POSITIVE_VALUES: '["Positiv"]'
depends_on:
- mongo
volumes:
- /var/cache/bridgehead/ccp/ovis/shared_data:/app/generated
healthcheck:
test: ["CMD-SHELL", "node -e \"require('http').get('http://localhost:9000/health', res => process.exit(res.statusCode===200?0:1)).on('error', () => process.exit(1));\""]
interval: 10s
timeout: 5s
retries: 6
start_period: 5s
command: ["node", "./Preprocessing/catalogue-service.mjs"]
ovis-backend-data-import:
image: docker.verbis.dkfz.de/ovis/ovis-backend-data-import-ccp:latest
container_name: bridgehead-ccp-ovis-import
restart: on-failure
depends_on:
blaze:
condition: service_started
ovis-backend-data-preprocessing:
condition: service_healthy
environment:
# CCP mode: FHIR source configuration (ignored by DEMO image)
FHIR_SERVER_URL: http://bridgehead-ccp-blaze:8080/fhir
FHIR_USERNAME: ""
FHIR_PASSWORD: ""
ICD10_FILTER: ""
# Required for both CCP and DEMO: preprocessor upload endpoint
OVIS_PREPROCESSOR_URL: http://ovis-backend-data-preprocessing:9000/omock
# Proxy configuration
HTTP_PROXY: ""
HTTPS_PROXY: ""
NO_PROXY: ""
http_proxy: ""
https_proxy: ""
no_proxy: ""
volumes:
- /var/cache/bridgehead/ccp/ovis/shared_data:/shared
backend:
image: docker.verbis.dkfz.de/ovis/ovis-backend-apollo:latest
container_name: bridgehead-ccp-ovis-backend
restart: always
user: root
working_dir: /app
environment:
APOLLO_PORT: "4001"
CREDOS_PORT: "4000"
CORS_ORIGIN: "*"
DB: onc_test
ADRESS: mongodb://mongo:27017
depends_on:
- mongo
- ovis-backend-data-preprocessing
- ovis-backend-data-import
healthcheck:
test: ["CMD-SHELL", "test -d /app/node_modules/mongodb"]
interval: 10s
timeout: 5s
retries: 5
labels:
- "traefik.enable=true"
- "traefik.http.routers.ovis-backend.rule=PathPrefix(`/graphql`)"
- "traefik.http.routers.ovis-backend.tls=true"
- "traefik.http.routers.ovis-backend.service=ovis-backend"
- "traefik.http.routers.ovis-backend-ccp.rule=PathPrefix(`/ccp-ovis/graphql`)"
- "traefik.http.routers.ovis-backend-ccp.tls=true"
- "traefik.http.middlewares.ovis-backend-ccp-strip.stripprefix.prefixes=/ccp-ovis"
- "traefik.http.routers.ovis-backend-ccp.middlewares=ovis-backend-ccp-strip"
- "traefik.http.routers.ovis-backend-ccp.service=ovis-backend"
- "traefik.http.services.ovis-backend.loadbalancer.server.port=4001"
frontend:
image: docker.verbis.dkfz.de/ovis/ovis-frontend:latest
container_name: bridgehead-ccp-ovis-frontend
restart: always
environment:
OVIS_PUBLIC_BASE_PATH: /ccp-ovis
PUBLIC_GRAPHQL_URL: https://${HOST}/ccp-ovis/graphql
PUBLIC_LOGIN_ENABLED: "false"
PUBLIC_OVIS_IMPORT: ccp
OVIS_CATALOGUE_UPSTREAM_URL: http://ovis-backend-data-preprocessing:9000/catalogue
HTTP_PROXY: ""
HTTPS_PROXY: ""
NO_PROXY: ""
http_proxy: ""
https_proxy: ""
no_proxy: ""
depends_on:
backend:
condition: service_healthy
volumes:
# Dynamic catalogue from preprocessing service
- /var/cache/bridgehead/ccp/ovis/shared_data:/app/dynamic-catalogue:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.ovis-frontend-root-compat.tls=true"
- "traefik.http.routers.ovis-frontend-root-compat.rule=PathRegexp(`^/(icons|svg|fonts|api|downloads|Ovis_logo.svg|patient-cohort|patient-single|filter-edit|survival-definition|footer-version|user-management|tumorboard|tnm|therapy|therapy-systemic|therapy-radiation|therapy-general|therapy-operation|survival|supplementary|study|settings|status|progress|molecular-marker|footer-licensing|footer-privacy|footer-imprint|footer-issues|footer-contact|footer-cite|diagnosis|bio-material|consultation)(/.*)?$`)"
- "traefik.http.routers.ovis-frontend-root-compat.priority=900"
- "traefik.http.routers.ovis-frontend-root-compat.middlewares=ovis-frontend-root-compat-redirect"
- "traefik.http.routers.ovis-frontend-root-compat.service=ovis-frontend"
- "traefik.http.middlewares.ovis-frontend-root-compat-redirect.redirectregex.regex=^https?://([^/]+)/(.*)$"
- "traefik.http.middlewares.ovis-frontend-root-compat-redirect.redirectregex.replacement=https://$${1}/ccp-ovis/$${2}"
- "traefik.http.middlewares.ovis-frontend-root-compat-redirect.redirectregex.permanent=false"
- "traefik.http.routers.ovis-frontend-ccp-slash.tls=true"
- "traefik.http.routers.ovis-frontend-ccp-slash.rule=Path(`/ccp-ovis`)"
- "traefik.http.routers.ovis-frontend-ccp-slash.priority=1000"
- "traefik.http.routers.ovis-frontend-ccp-slash.middlewares=ovis-frontend-ccp-slash-redirect"
- "traefik.http.routers.ovis-frontend-ccp-slash.service=ovis-frontend"
- "traefik.http.middlewares.ovis-frontend-ccp-slash-redirect.redirectregex.regex=^https?://([^/]+)/ccp-ovis$"
- "traefik.http.middlewares.ovis-frontend-ccp-slash-redirect.redirectregex.replacement=https://$${1}/ccp-ovis/"
- "traefik.http.middlewares.ovis-frontend-ccp-slash-redirect.redirectregex.permanent=true"
- "traefik.http.routers.ovis-frontend-ccp.tls=true"
- "traefik.http.routers.ovis-frontend-ccp.rule=PathPrefix(`/ccp-ovis`)"
- "traefik.http.middlewares.ovis-frontend-ccp-strip.stripprefix.prefixes=/ccp-ovis"
- "traefik.http.routers.ovis-frontend-ccp.middlewares=ovis-frontend-ccp-strip"
- "traefik.http.services.ovis-frontend.loadbalancer.server.port=5173"