feat: migrate to new dnpm:dip node

This commit is contained in:
janskiba 2024-11-13 17:15:35 +00:00
parent 910289079b
commit a4039672a5
5 changed files with 167 additions and 85 deletions

View File

@ -1,34 +1,88 @@
version: "3.7" version: "3.7"
services: services:
dnpm-backend: dnpm-mysql:
image: ghcr.io/kohlbacherlab/bwhc-backend:1.0-snapshot-broker-connector image: mysql:latest
container_name: bridgehead-dnpm-backend healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 3s
timeout: 5s
retries: 5
environment: environment:
- ZPM_SITE=${ZPM_SITE} MYSQL_ROOT_HOST: "%"
- N_RANDOM_FILES=${DNPM_SYNTH_NUM} MYSQL_ROOT_PASSWORD: ${DNPM_MYSQL_ROOT_PASSWORD}
volumes: volumes:
- /etc/bridgehead/dnpm:/bwhc_config:ro - dnpm-mysql:/var/lib/mysql
- ${DNPM_DATA_DIR}:/bwhc_data
labels:
- "traefik.enable=true"
- "traefik.http.routers.bwhc-backend.rule=PathPrefix(`/bwhc`)"
- "traefik.http.services.bwhc-backend.loadbalancer.server.port=9000"
- "traefik.http.routers.bwhc-backend.tls=true"
dnpm-frontend: dnpm-authup:
image: ghcr.io/kohlbacherlab/bwhc-frontend:2209 image: authup/authup:latest
container_name: bridgehead-dnpm-frontend container_name: bridgehead-dnpm-authup
links: volumes:
- dnpm-backend - dnpm-authup:/usr/src/app/writable
depends_on:
dnpm-mysql:
condition: service_healthy
command: server/core start
environment: environment:
- NUXT_HOST=0.0.0.0 - PUBLIC_URL=https://${HOST}/auth/
- NUXT_PORT=8080 - AUTHORIZE_REDIRECT_URL=https://${HOST}
- BACKEND_PROTOCOL=https - ROBOT_ADMIN_ENABLED=true
- BACKEND_HOSTNAME=$HOST - ROBOT_ADMIN_SECRET=${DNPM_AUTHUP_SECRET}
- BACKEND_PORT=443 - ROBOT_ADMIN_SECRET_RESET=true
- DB_TYPE=mysql
- DB_HOST=dnpm-mysql
- DB_USERNAME=root
- DB_PASSWORD=${DNPM_MYSQL_ROOT_PASSWORD}
- DB_DATABASE=auth
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.bwhc-frontend.rule=PathPrefix(`/`)" - "traefik.http.middlewares.authup-strip.stripprefix.prefixes=/auth"
- "traefik.http.services.bwhc-frontend.loadbalancer.server.port=8080" - "traefik.http.routers.dnpm-auth.middlewares=authup-strip"
- "traefik.http.routers.bwhc-frontend.tls=true" - "traefik.http.routers.dnpm-auth.rule=PathPrefix(`/auth`)"
- "traefik.http.services.dnpm-auth.loadbalancer.server.port=3000"
- "traefik.http.routers.dnpm-auth.tls=true"
dnpm-portal:
image: ghcr.io/kohlbacherlab/dnpm-dip-portal:latest
container_name: bridgehead-dnpm-portal
environment:
- NUXT_API_URL=http://dnpm-backend:9000/
- NUXT_PUBLIC_API_URL=https://${HOST}/api/
- NUXT_AUTHUP_URL=http://dnpm-authup:3000/
- NUXT_PUBLIC_AUTHUP_URL=https://${HOST}/auth/
labels:
- "traefik.enable=true"
- "traefik.http.routers.dnpm-frontend.rule=PathPrefix(`/`)"
- "traefik.http.services.dnpm-frontend.loadbalancer.server.port=3000"
- "traefik.http.routers.dnpm-frontend.tls=true"
dnpm-backend:
container_name: bridgehead-dnpm-backend
image: ghcr.io/kohlbacherlab/dnpm-dip-backend:latest
environment:
- LOCAL_SITE=${ZPM_SITE}:${SITE_ID} # Format: {Site-ID}:{Site-name}, e.g. UKT:Tübingen
- RD_RANDOM_DATA=${DNPM_SYNTH_NUM:--1}
- MTB_RANDOM_DATA=${DNPM_SYNTH_NUM:--1}
- HATEOAS_HOST=https://${HOST}
- CONNECTOR_TYPE=${BACKEND_CONNECTOR_TYPE:-broker}
- AUTHUP_URL=robot://system:${DNPM_AUTHUP_SECRET}@http://dnpm-authup:3000
volumes:
- /etc/bridgehead/dnpm/config:/dnpm_config
- dnpm-backend-data:/dnpm_data
depends_on:
dnpm-authup:
condition: service_healthy
labels:
- "traefik.enable=true"
- "traefik.http.routers.dnpm-backend.rule=PathPrefix(`/api`)"
- "traefik.http.services.dnpm-backend.loadbalancer.server.port=9000"
- "traefik.http.routers.dnpm-backend.tls=true"
landing:
labels:
- "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"
volumes:
dnpm-authup:
dnpm-mysql:
dnpm-backend-data:

View File

@ -1,28 +1,15 @@
#!/bin/bash #!/bin/bash
if [ -n "${ENABLE_DNPM_NODE}" ]; then if [ -n "${ENABLE_DNPM_NODE}" ]; then
log INFO "DNPM setup detected (BwHC Node) -- will start BwHC node." log INFO "DNPM setup detected -- will start DNPM:DIP node."
OVERRIDE+=" -f ./$PROJECT/modules/dnpm-node-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/dnpm-node-compose.yml"
# Set variables required for BwHC Node. ZPM_SITE is assumed to be set in /etc/bridgehead/<project>.conf # Set variables required for BwHC Node. ZPM_SITE is assumed to be set in /etc/bridgehead/<project>.conf
DNPM_APPLICATION_SECRET="$(echo \"This is a salt string to generate one consistent password for DNPM. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
if [ -z "${ZPM_SITE+x}" ]; then if [ -z "${ZPM_SITE+x}" ]; then
log ERROR "Mandatory variable ZPM_SITE not defined!" log ERROR "Mandatory variable ZPM_SITE not defined!"
exit 1 exit 1
fi fi
if [ -z "${DNPM_DATA_DIR+x}" ]; then DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:--1}
log ERROR "Mandatory variable DNPM_DATA_DIR not defined!" DNPM_MYSQL_ROOT_PASSWORD="$(generate_simple_password 'dnpm mysql')"
exit 1 DNPM_AUTHUP_SECRET="$(generate_simple_password 'dnpm authup')"
fi
DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:-0}
if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then
echo "Override of landing page url already in place"
else
echo "Adding override of landing page url"
if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then
echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
else
echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
fi
fi
fi fi

View File

@ -16,7 +16,7 @@ services:
- --entrypoints.web.http.redirections.entrypoint.scheme=https - --entrypoints.web.http.redirections.entrypoint.scheme=https
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard/`)" - "traefik.http.routers.dashboard.rule=PathPrefix(`/dashboard/`)"
- "traefik.http.routers.dashboard.entrypoints=websecure" - "traefik.http.routers.dashboard.entrypoints=websecure"
- "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.tls=true" - "traefik.http.routers.dashboard.tls=true"

View File

@ -1,34 +1,88 @@
version: "3.7" version: "3.7"
services: services:
dnpm-backend: dnpm-mysql:
image: ghcr.io/kohlbacherlab/bwhc-backend:1.0-snapshot-broker-connector image: mysql:latest
container_name: bridgehead-dnpm-backend healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 3s
timeout: 5s
retries: 5
environment: environment:
- ZPM_SITE=${ZPM_SITE} MYSQL_ROOT_HOST: "%"
- N_RANDOM_FILES=${DNPM_SYNTH_NUM} MYSQL_ROOT_PASSWORD: ${DNPM_MYSQL_ROOT_PASSWORD}
volumes: volumes:
- /etc/bridgehead/dnpm:/bwhc_config:ro - dnpm-mysql:/var/lib/mysql
- ${DNPM_DATA_DIR}:/bwhc_data
labels:
- "traefik.enable=true"
- "traefik.http.routers.bwhc-backend.rule=PathPrefix(`/bwhc`)"
- "traefik.http.services.bwhc-backend.loadbalancer.server.port=9000"
- "traefik.http.routers.bwhc-backend.tls=true"
dnpm-frontend: dnpm-authup:
image: ghcr.io/kohlbacherlab/bwhc-frontend:2209 image: authup/authup:latest
container_name: bridgehead-dnpm-frontend container_name: bridgehead-dnpm-authup
links: volumes:
- dnpm-backend - dnpm-authup:/usr/src/app/writable
depends_on:
dnpm-mysql:
condition: service_healthy
command: server/core start
environment: environment:
- NUXT_HOST=0.0.0.0 - PUBLIC_URL=https://${HOST}/auth/
- NUXT_PORT=8080 - AUTHORIZE_REDIRECT_URL=https://${HOST}
- BACKEND_PROTOCOL=https - ROBOT_ADMIN_ENABLED=true
- BACKEND_HOSTNAME=$HOST - ROBOT_ADMIN_SECRET=${DNPM_AUTHUP_SECRET}
- BACKEND_PORT=443 - ROBOT_ADMIN_SECRET_RESET=true
- DB_TYPE=mysql
- DB_HOST=dnpm-mysql
- DB_USERNAME=root
- DB_PASSWORD=${DNPM_MYSQL_ROOT_PASSWORD}
- DB_DATABASE=auth
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.bwhc-frontend.rule=PathPrefix(`/`)" - "traefik.http.middlewares.authup-strip.stripprefix.prefixes=/auth"
- "traefik.http.services.bwhc-frontend.loadbalancer.server.port=8080" - "traefik.http.routers.dnpm-auth.middlewares=authup-strip"
- "traefik.http.routers.bwhc-frontend.tls=true" - "traefik.http.routers.dnpm-auth.rule=PathPrefix(`/auth`)"
- "traefik.http.services.dnpm-auth.loadbalancer.server.port=3000"
- "traefik.http.routers.dnpm-auth.tls=true"
dnpm-portal:
image: ghcr.io/kohlbacherlab/dnpm-dip-portal:latest
container_name: bridgehead-dnpm-portal
environment:
- NUXT_API_URL=http://dnpm-backend:9000/
- NUXT_PUBLIC_API_URL=https://${HOST}/api/
- NUXT_AUTHUP_URL=http://dnpm-authup:3000/
- NUXT_PUBLIC_AUTHUP_URL=https://${HOST}/auth/
labels:
- "traefik.enable=true"
- "traefik.http.routers.dnpm-frontend.rule=PathPrefix(`/`)"
- "traefik.http.services.dnpm-frontend.loadbalancer.server.port=3000"
- "traefik.http.routers.dnpm-frontend.tls=true"
dnpm-backend:
container_name: bridgehead-dnpm-backend
image: ghcr.io/kohlbacherlab/dnpm-dip-backend:latest
environment:
- LOCAL_SITE=${ZPM_SITE}:${SITE_ID} # Format: {Site-ID}:{Site-name}, e.g. UKT:Tübingen
- RD_RANDOM_DATA=${DNPM_SYNTH_NUM:--1}
- MTB_RANDOM_DATA=${DNPM_SYNTH_NUM:--1}
- HATEOAS_HOST=https://${HOST}
- CONNECTOR_TYPE=${BACKEND_CONNECTOR_TYPE:-broker}
- AUTHUP_URL=robot://system:${DNPM_AUTHUP_SECRET}@http://dnpm-authup:3000
volumes:
- /etc/bridgehead/dnpm/config:/dnpm_config
- dnpm-backend-data:/dnpm_data
depends_on:
dnpm-authup:
condition: service_healthy
labels:
- "traefik.enable=true"
- "traefik.http.routers.dnpm-backend.rule=PathPrefix(`/api`)"
- "traefik.http.services.dnpm-backend.loadbalancer.server.port=9000"
- "traefik.http.routers.dnpm-backend.tls=true"
landing:
labels:
- "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"
volumes:
dnpm-authup:
dnpm-mysql:
dnpm-backend-data:

View File

@ -1,28 +1,15 @@
#!/bin/bash #!/bin/bash
if [ -n "${ENABLE_DNPM_NODE}" ]; then if [ -n "${ENABLE_DNPM_NODE}" ]; then
log INFO "DNPM setup detected (BwHC Node) -- will start BwHC node." log INFO "DNPM setup detected -- will start DNPM:DIP node."
OVERRIDE+=" -f ./$PROJECT/modules/dnpm-node-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/dnpm-node-compose.yml"
# Set variables required for BwHC Node. ZPM_SITE is assumed to be set in /etc/bridgehead/<project>.conf # Set variables required for BwHC Node. ZPM_SITE is assumed to be set in /etc/bridgehead/<project>.conf
DNPM_APPLICATION_SECRET="$(echo \"This is a salt string to generate one consistent password for DNPM. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
if [ -z "${ZPM_SITE+x}" ]; then if [ -z "${ZPM_SITE+x}" ]; then
log ERROR "Mandatory variable ZPM_SITE not defined!" log ERROR "Mandatory variable ZPM_SITE not defined!"
exit 1 exit 1
fi fi
if [ -z "${DNPM_DATA_DIR+x}" ]; then DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:--1}
log ERROR "Mandatory variable DNPM_DATA_DIR not defined!" DNPM_MYSQL_ROOT_PASSWORD="$(generate_simple_password 'dnpm mysql')"
exit 1 DNPM_AUTHUP_SECRET="$(generate_simple_password 'dnpm authup')"
fi
DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:-0}
if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then
echo "Override of landing page url already in place"
else
echo "Adding override of landing page url"
if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then
echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
else
echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
fi
fi
fi fi