refactor: align Bridgehead OVIS CCP overlay with upstream runtime contracts

Apply the PR #375 review feedback by removing Bridgehead-specific compose/setup overrides
that duplicated upstream OVIS behavior and by switching to the upstream-built Mongo image
that already contains init logic.
- rename CCP OVIS services to consistent upstream-style names (`ovis-*`) and update internal dependencies
- switch Mongo service image from direct `mongo:latest` + host-mounted init script to `docker.verbis.dkfz.de/ovis/ovis-backend-mongodb:latest`
- remove obsolete Mongo init bind mount (`/docker-entrypoint-initdb.d/init.js`) from compose
- drop redundant runtime overrides from compose (`restart`, `command`, `user`, `working_dir`)
- remove duplicated app-default/preprocessor env overrides (`OVIS_PREPROC_*`, misc backend defaults) and keep deployment wiring only
- fix Mongo connection env usage to `ADDRESS` and point services to `ovis-backend-database-mongodb`
- remove temporary root-compat Traefik redirect shim and keep mounted `/ccp-ovis` routing labels
- remove setup-time generation of Mongo init.js and related cache directory prep from `ccp/modules/ovis-setup.sh`
This commit is contained in:
tm16-medma
2026-03-23 11:28:27 +01:00
parent 921bac11d2
commit 191f5f24da
2 changed files with 13 additions and 102 deletions

View File

@@ -1,77 +1,36 @@
version: "3.7" version: "3.7"
services: services:
mongo: ovis-backend-database-mongodb:
image: mongo:latest image: docker.verbis.dkfz.de/ovis/ovis-backend-mongodb:latest
container_name: bridgehead-ccp-ovis-mongo 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: ovis-backend-mongodb-data-preprocessing:
image: docker.verbis.dkfz.de/ovis/ovis-backend-preprocessor:latest image: docker.verbis.dkfz.de/ovis/ovis-backend-preprocessor:latest
container_name: bridgehead-ccp-ovis-preprocessing container_name: bridgehead-ccp-ovis-preprocessing
restart: on-failure
user: root
working_dir: /app
environment: environment:
APOLLO_PORT: "4001" ADDRESS: mongodb://ovis-backend-database-mongodb:27017
CREDOS_PORT: "4000"
HTTP_PROXY: "" HTTP_PROXY: ""
HTTPS_PROXY: "" HTTPS_PROXY: ""
NO_PROXY: "" NO_PROXY: ""
http_proxy: "" http_proxy: ""
https_proxy: "" https_proxy: ""
no_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: depends_on:
- mongo - ovis-backend-database-mongodb
volumes:
- /var/cache/bridgehead/ccp/ovis/shared_data:/app/generated
healthcheck: 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));\""] 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 interval: 10s
timeout: 5s timeout: 5s
retries: 6 retries: 6
start_period: 5s start_period: 5s
command: ["node", "./Preprocessing/catalogue-service.mjs"]
ovis-backend-data-import: ovis-backend-data-import:
image: docker.verbis.dkfz.de/ovis/ovis-backend-data-import-ccp:latest image: docker.verbis.dkfz.de/ovis/ovis-backend-data-import-ccp:latest
container_name: bridgehead-ccp-ovis-import container_name: bridgehead-ccp-ovis-import
restart: on-failure
depends_on: depends_on:
ovis-backend-data-preprocessing: ovis-backend-mongodb-data-preprocessing:
condition: service_healthy condition: service_healthy
environment: environment:
# CCP mode: FHIR source configuration (ignored by DEMO image) # CCP mode: FHIR source configuration (ignored by DEMO image)
@@ -79,8 +38,6 @@ services:
FHIR_USERNAME: "" FHIR_USERNAME: ""
FHIR_PASSWORD: "" FHIR_PASSWORD: ""
ICD10_FILTER: "" ICD10_FILTER: ""
# Required for both CCP and DEMO: preprocessor upload endpoint
OVIS_PREPROCESSOR_URL: http://ovis-backend-data-preprocessing:9000/omock
# Proxy configuration # Proxy configuration
HTTP_PROXY: "" HTTP_PROXY: ""
HTTPS_PROXY: "" HTTPS_PROXY: ""
@@ -88,24 +45,15 @@ services:
http_proxy: "" http_proxy: ""
https_proxy: "" https_proxy: ""
no_proxy: "" no_proxy: ""
volumes:
- /var/cache/bridgehead/ccp/ovis/shared_data:/shared
backend: ovis-backend-apollo:
image: docker.verbis.dkfz.de/ovis/ovis-backend-apollo:latest image: docker.verbis.dkfz.de/ovis/ovis-backend-apollo:latest
container_name: bridgehead-ccp-ovis-backend container_name: bridgehead-ccp-ovis-backend
restart: always
user: root
working_dir: /app
environment: environment:
APOLLO_PORT: "4001" ADDRESS: mongodb://ovis-backend-database-mongodb:27017
CREDOS_PORT: "4000"
CORS_ORIGIN: "*"
DB: onc_test
ADRESS: mongodb://mongo:27017
depends_on: depends_on:
- mongo - ovis-backend-database-mongodb
- ovis-backend-data-preprocessing - ovis-backend-mongodb-data-preprocessing
- ovis-backend-data-import - ovis-backend-data-import
healthcheck: healthcheck:
test: ["CMD-SHELL", "test -d /app/node_modules/mongodb"] test: ["CMD-SHELL", "test -d /app/node_modules/mongodb"]
@@ -124,16 +72,14 @@ services:
- "traefik.http.routers.ovis-backend-ccp.service=ovis-backend" - "traefik.http.routers.ovis-backend-ccp.service=ovis-backend"
- "traefik.http.services.ovis-backend.loadbalancer.server.port=4001" - "traefik.http.services.ovis-backend.loadbalancer.server.port=4001"
frontend: ovis-frontend:
image: docker.verbis.dkfz.de/ovis/ovis-frontend:latest image: docker.verbis.dkfz.de/ovis/ovis-frontend:latest
container_name: bridgehead-ccp-ovis-frontend container_name: bridgehead-ccp-ovis-frontend
restart: always
environment: environment:
OVIS_PUBLIC_BASE_PATH: /ccp-ovis OVIS_PUBLIC_BASE_PATH: /ccp-ovis
PUBLIC_GRAPHQL_URL: https://${HOST}/ccp-ovis/graphql PUBLIC_GRAPHQL_URL: https://${HOST}/ccp-ovis/graphql
PUBLIC_LOGIN_ENABLED: "false" PUBLIC_LOGIN_ENABLED: "false"
PUBLIC_OVIS_IMPORT: ccp PUBLIC_OVIS_IMPORT: ccp
OVIS_CATALOGUE_UPSTREAM_URL: http://ovis-backend-data-preprocessing:9000/catalogue
HTTP_PROXY: "" HTTP_PROXY: ""
HTTPS_PROXY: "" HTTPS_PROXY: ""
NO_PROXY: "" NO_PROXY: ""
@@ -141,21 +87,10 @@ services:
https_proxy: "" https_proxy: ""
no_proxy: "" no_proxy: ""
depends_on: depends_on:
backend: ovis-backend-apollo:
condition: service_healthy condition: service_healthy
volumes:
# Dynamic catalogue from preprocessing service
- /var/cache/bridgehead/ccp/ovis/shared_data:/app/dynamic-catalogue:ro
labels: labels:
- "traefik.enable=true" - "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|CCP_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.tls=true"
- "traefik.http.routers.ovis-frontend-ccp-slash.rule=Path(`/ccp-ovis`)" - "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.priority=1000"

View File

@@ -4,30 +4,6 @@ if [ -n "$ENABLE_OVIS" ]; then
if declare -F log >/dev/null 2>&1; then if declare -F log >/dev/null 2>&1; then
log INFO "OVIS setup detected -- will start OVIS services." log INFO "OVIS setup detected -- will start OVIS services."
fi fi
mkdir -p "/var/cache/bridgehead/ccp/ovis/mongo/init"
mkdir -p "/var/cache/bridgehead/ccp/ovis/shared_data"
cat >"/var/cache/bridgehead/ccp/ovis/mongo/init/init.js" <<'EOF'
db = db.getSiblingDB("onc_test");
db.createCollection("user");
db.user.updateOne(
{ _id: "OVIS-Root" },
{
$setOnInsert: {
_id: "OVIS-Root",
createdAt: new Date(),
createdBy: "system",
role: "super-admin",
status: "active",
pseudonymization: false,
darkMode: false,
colorTheme: "CCCMunich",
language: "de"
}
},
{ upsert: true }
);
EOF
OVERRIDE+=" -f ./$PROJECT/modules/ovis-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/ovis-compose.yml"
fi fi