mirror of
https://github.com/samply/bridgehead.git
synced 2026-08-13 15:52:37 +02:00
138 lines
5.8 KiB
YAML
138 lines
5.8 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
|
|
beam-proxy:
|
|
environment:
|
|
APP_project-manager_KEY: ${BEAM_SECRET_PROJECT_MANAGER}
|
|
|
|
project-manager-api:
|
|
container_name: project-manager-api
|
|
image: docker.verbis.dkfz.de/ccp/cce-project-manager:latest
|
|
environment:
|
|
ROOT_LOG_LEVEL: "${PM_ROOT_LOG_LEVEL:-INFO}" # Default to INFO if not set
|
|
LOG_LEVEL: "${PM_LOG_LEVEL:-INFO}" # Use LOG_LEVEL, or ROOT_LOG_LEVEL if LOG_LEVEL is not set
|
|
BEAM_API_KEY: "${BEAM_SECRET_PROJECT_MANAGER}"
|
|
BEAM_PROJECT_MANAGER_ID: "project-manager.${PROXY_ID}"
|
|
BEAM_URL: "http://beam-proxy:8081"
|
|
FRONTEND_BASEURL: "https://${HOST}/request"
|
|
BACKEND_BASEURL: "https://${HOST}/requester-api"
|
|
PROJECT_MANAGER_DB_URL: "jdbc:postgresql://project-manager-api-db:5432/project_manager"
|
|
PROJECT_MANAGER_DB_USER: "project_manager"
|
|
PROJECT_MANAGER_DB_PASSWORD: "${PROJECT_MANAGER_DB_PASSWORD}"
|
|
SERVER_SERVLET_CONTEXT_PATH: "/requester-api"
|
|
# https://docs.spring.io/spring-boot/docs/2.7.15/reference/html/howto.html#howto.webserver.configure-access-logs
|
|
# The follwing variable allows to redirect to OIDC server using https instead of http
|
|
SERVER_FORWARD_HEADERS_STRATEGY: "framework"
|
|
HTTP_PROXY_URL: "http://forward_proxy:3128"
|
|
HTTP_PROXY_NOPROXY: "beam-proxy,token-manager,beam-register"
|
|
SPRING_MAIL_TEST_HOST: "test-smtp-server"
|
|
SPRING_MAIL_TEST_PORT: "1025"
|
|
TEST_EMAIL_DOMAINS: "test.dkfz.de"
|
|
DB_ENCRYPTION_PRIVATE_KEY_IN_BASE64: "${PROJECT_MANAGER_DB_ENCRYPTION_PRIVATE_KEY_IN_BASE64}"
|
|
OIDC_URL: "${PM_OIDC_URL}"
|
|
OIDC_CLIENT_ID: "${PM_OIDC_PRIVATE_CLIENT_ID}"
|
|
OIDC_CLIENT_SECRET: "${PM_OIDC_PRIVATE_SECRET}"
|
|
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.project-manager-api.rule=PathPrefix(`/requester-api`)"
|
|
- "traefik.http.services.project-manager-api.loadbalancer.server.port=8097"
|
|
- "traefik.http.routers.project-manager-api.tls=true"
|
|
volumes:
|
|
- "/var/cache/bridgehead/cce/project-manager-api:/app/documents"
|
|
depends_on:
|
|
project-manager-api-db:
|
|
condition: service_healthy
|
|
|
|
project-manager-api-db:
|
|
container_name: project-manager-api-db
|
|
image: postgres:${POSTGRES_VERSION}
|
|
environment:
|
|
POSTGRES_USER: "project_manager"
|
|
POSTGRES_PASSWORD: "${PROJECT_MANAGER_DB_PASSWORD}"
|
|
POSTGRES_DB: "project_manager"
|
|
PGDATA: "/var/lib/postgresql/data/pgdata" # Prevent corruption during abrupt shutdowns
|
|
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C" # Better sorting
|
|
command: >
|
|
postgres -c max_connections=200
|
|
-c shared_buffers=1GB
|
|
-c work_mem=64MB
|
|
-c effective_cache_size=2GB
|
|
-c random_page_cost=1.1
|
|
-c log_min_duration_statement=500
|
|
-c idle_in_transaction_session_timeout=60000
|
|
volumes:
|
|
- "/var/cache/bridgehead/cce/project-manager-db:/var/lib/postgresql/data"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U project_manager -d project_manager"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
start_period: 10s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "2"
|
|
memory: "2GB"
|
|
reservations:
|
|
cpus: "1"
|
|
memory: "512MB"
|
|
restart: unless-stopped
|
|
|
|
|
|
project-manager-ui:
|
|
container_name: project-manager-ui
|
|
image: samply/project-manager-ui:develop
|
|
environment:
|
|
STANDALONE_SINGLE_SPA: "true"
|
|
VUE_APP_OIDC_URL: "${PM_OIDC_URL}"
|
|
VUE_APP_OIDC_CLIENT_ID: "${PM_OIDC_PUBLIC_CLIENT_ID}"
|
|
VUE_APP_BACKEND_URL: "https://${HOST}/requester-api"
|
|
VUE_APP_FRONTEND_URL: "https://${HOST}/request"
|
|
VUE_APP_FRONTEND_NAME: "<b>CCE BioDataHub</b> Requester"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.project-manager-ui.rule=PathPrefix(`/request`)"
|
|
- "traefik.http.services.project-manager-ui.loadbalancer.server.port=80"
|
|
- "traefik.http.routers.project-manager-ui.tls=true"
|
|
- "traefik.http.middlewares.project-manager-ui-strip.stripprefix.prefixes=/request"
|
|
- "traefik.http.middlewares.project-manager-ui-headers.headers.customRequestHeaders.X-Forwarded-Proto=https"
|
|
- "traefik.http.routers.project-manager-ui.middlewares=project-manager-ui-strip,project-manager-ui-headers"
|
|
|
|
|
|
test-smtp-server:
|
|
container_name: test-smtp-server
|
|
image: axllent/mailpit:${MAILPIT_VERSION}
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.test-smtp-server.rule=PathPrefix(`/smtp`)"
|
|
- "traefik.http.services.test-smtp-server.loadbalancer.server.port=8025"
|
|
- "traefik.http.routers.test-smtp-server.tls=true"
|
|
- "traefik.http.routers.test-smtp-server.middlewares=auth-test-smtp-server"
|
|
- "traefik.http.middlewares.auth-test-smtp-server.basicauth.users=${TEST_SMTP_AUTH}"
|
|
environment:
|
|
MP_WEBROOT: "/smtp" # https://mailpit.axllent.org/docs/configuration/runtime-options/
|
|
|
|
|
|
# GUI for administrating project-manager-api database
|
|
sql-gui:
|
|
container_name: sql-gui
|
|
image: dbeaver/cloudbeaver:${DBEAVER_VERSION}
|
|
environment: # https://dbeaver.com/docs/cloudbeaver/Server-configuration/
|
|
CLOUDBEAVER_ROOT_URI: "/sql"
|
|
CB_ADMIN_NAME: "${DBEAVER_USER}"
|
|
CB_ADMIN_PASSWORD: "${DBEAVER_PASSWORD}"
|
|
CB_SERVER_URL: "https://${HOST}"
|
|
CB_SERVER_NAME: "Project Manager API Database"
|
|
volumes:
|
|
- "/var/cache/bridgehead/cce/cloudbeaver-data:/opt/cloudbeaver/workspace"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.dbeaver.rule=PathPrefix(`/sql`)"
|
|
- "traefik.http.services.dbeaver.loadbalancer.server.port=8978"
|
|
- "traefik.http.routers.dbeaver.tls=true"
|
|
- "traefik.http.routers.dbeaver.middlewares=auth-dbeaver"
|
|
- "traefik.http.middlewares.auth-dbeaver.basicauth.users=${SQL_GUI_AUTH}"
|
|
|