Files
bridgehead/cce/modules/project-manager-compose.yml

140 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"
BROKER_ID: "${BROKER_ID}"
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"
SPRING_MAIL_TEST_HOST: "test-smtp-server"
SPRING_MAIL_TEST_PORT: "1025"
DB_ENCRYPTION_PRIVATE_KEY_IN_BASE64: "${PROJECT_MANAGER_DB_ENCRYPTION_PRIVATE_KEY_IN_BASE64}"
OIDC_URL: "${PM_OIDC_PRIVATE_URL}"
OIDC_CLIENT_ID: "${PM_OIDC_PRIVATE_CLIENT_ID}"
OIDC_CLIENT_SECRET: "${PM_OIDC_PRIVATE_SECRET}"
EXPLORER_URL: "https://${HOST}"
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
forward_proxy:
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_PUBLIC_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 VDC</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}"