forked from linux/WebHosting
Merge pull request 'update compose to work with modules/stack' (#91) from refactor/compose-application-modules into main
Reviewed-on: linux/WebHosting#91
This commit is contained in:
20 files changed
+752
-608
No files matched your search
+6
-28
@@ -1,28 +1,6 @@
|
||||
# Required non-SAP inputs to docker-compose.yaml.
|
||||
# Schema only: empty values deliberately fail Compose validation.
|
||||
# Puppet/Hiera owns the deployed .env. Do not replace it with this file.
|
||||
# Supplier-managed SAP/BANF settings are not included here.
|
||||
# Quote literal values containing dollar signs with single quotes in .env.
|
||||
|
||||
# Swiss eCargo
|
||||
ecargo_api_key=
|
||||
|
||||
# HedgeDoc (application and database use the same database credentials)
|
||||
hedgedoc_user=
|
||||
hedgedoc_password=
|
||||
bind_user=
|
||||
bind_password=
|
||||
session_secret=
|
||||
|
||||
# IT strategy dashboard
|
||||
IT_DASHBOARD_DB_USER=
|
||||
IT_DASHBOARD_DB_PW=
|
||||
IT_DASHBOARD_DB_ROOT_PW=
|
||||
JWT_SECRET=
|
||||
ADMIN_PW_HASH=
|
||||
|
||||
# Panda Maintenance
|
||||
PANDA_MAINTENANCE_DB_PW=
|
||||
|
||||
# Tomcat Wiki
|
||||
TOMCATWIKI_DB_SECRET=
|
||||
# Optional nonsecret Compose setting; this is also the default when unset.
|
||||
# Puppet/Hiera owns the deployed .env. Do not replace it with this example:
|
||||
# Other applications and rollback still use its existing settings.
|
||||
# Migrated application credentials live in the eleven service env files listed
|
||||
# in README.md and are read with format: raw.
|
||||
WEBHOSTING_ENV_DIR=/etc/webhosting
|
||||
@@ -1,43 +1,125 @@
|
||||
# WebHosting
|
||||
|
||||
Docker Compose services and Nginx/Apache configuration for the shared web host.
|
||||
Puppet deploys the host configuration and the environment file from Hiera-eyaml.
|
||||
Puppet deploys the host configuration and environment files from Hiera-eyaml.
|
||||
|
||||
## Compose layout
|
||||
|
||||
Requires **Docker Compose 2.30.0 or later** for raw service env files. The root
|
||||
`docker-compose.yaml` is the deployment entrypoint and assembles these modules:
|
||||
|
||||
```text
|
||||
docker-compose.yaml
|
||||
stacks/
|
||||
proxy/compose.yaml
|
||||
legacy-web/compose.yaml
|
||||
excalidraw/compose.yaml
|
||||
elog/compose.yaml
|
||||
pepisco/compose.yaml
|
||||
swiss-ecargo/compose.yaml
|
||||
hedgedoc/compose.yaml
|
||||
opticswiki/compose.yaml
|
||||
slsbl/compose.yaml
|
||||
n8n/compose.yaml
|
||||
dashboard/compose.yaml
|
||||
panda-maintenance/compose.yaml
|
||||
sap/compose.yaml
|
||||
summer-project-selection/compose.yaml
|
||||
tomcatwiki/compose.yaml
|
||||
scicat-rocrate/compose.yaml
|
||||
pikettlischte-beautifier/compose.yaml
|
||||
```
|
||||
|
||||
Each application stays with its database and supporting containers. `legacy-web`
|
||||
contains the shared Apache sites and scheduler; `elog` groups the four logbooks.
|
||||
`sap` contains the TIA, document-router, and BANF definitions. TIA and
|
||||
document-router keep their existing inline WebUI authentication entries; only
|
||||
the BANF passwords move to separate test and production env files.
|
||||
|
||||
Run Compose through the root file, using the existing deployment directory and
|
||||
project name. These modules belong to **one Compose project**; their shared
|
||||
network definitions remain in the root file. They are not standalone deployment
|
||||
entrypoints. For example, use `docker compose --env-file .env up -d excalidraw`
|
||||
from the repository root to update that service.
|
||||
|
||||
Every include sets `project_directory: .` so relative paths such as
|
||||
`./apache/conf` and the default `.env` still resolve from the repository root.
|
||||
The service names, container names, images, networks, and data paths are preserved.
|
||||
See [Docker's include documentation](https://docs.docker.com/reference/compose-file/include/).
|
||||
|
||||
## Environment configuration
|
||||
|
||||
The existing variable names and single Puppet-managed `.env` file remain the
|
||||
deployment interface. `.env.example` documents the required non-SAP variables;
|
||||
its empty values are intentional and it must not replace the deployed file.
|
||||
SAP/TIA, document-router, and BANF service configuration is unchanged.
|
||||
Swiss eCargo, HedgeDoc, the dashboard, Panda Maintenance, Tomcat Wiki, and BANF read
|
||||
their credentials from service-specific files under `/etc/webhosting`. In the
|
||||
`hiera/data-lx` repository, `default/lx-docker-01.psi.ch.yaml` renders these files
|
||||
from the existing `lx-data::docker-env::*` keys. Files are root-owned with mode
|
||||
`0600`; their directories have mode `0700`. Run Compose as a deployment user
|
||||
with permission to read them.
|
||||
|
||||
Non-SAP credentials use Compose's `${VARIABLE:?message}` syntax so missing or
|
||||
empty values stop configuration loading. Compose loads the whole project even
|
||||
when a command targets a single service, so provide the complete deployed env
|
||||
file for these commands too. Supplier-managed variables retain their existing
|
||||
behavior.
|
||||
| File under `/etc/webhosting/` | Service | Required non-empty variables |
|
||||
| --- | --- | --- |
|
||||
| `swiss-ecargo/app.env` | `swiss-ecargo` | `HOSTED_API_KEY` |
|
||||
| `hedgedoc/app.env` | `hedgedoc_app` | `CMD_DB_USERNAME`, `CMD_DB_PASSWORD`, `CMD_LDAP_BINDDN`, `CMD_LDAP_BINDCREDENTIALS`, `CMD_SESSION_SECRET` |
|
||||
| `hedgedoc/db.env` | `hedgedoc_db` | `POSTGRES_USER`, `POSTGRES_PASSWORD` |
|
||||
| `dashboard/backend.env` | `it-strategy-dashboard-backend` | `DB_USER`, `DB_PASS`, `JWT_SECRET`, `ADMIN_PW_HASH` |
|
||||
| `dashboard/db.env` | `it-strategy-dashboard-db` | `MYSQL_ROOT_PASSWORD`, `MYSQL_USER`, `MYSQL_PASSWORD` |
|
||||
| `panda-maintenance/app.env` | `panda-maintenance-app` | `POSTGRES_PASSWORD` |
|
||||
| `panda-maintenance/db.env` | `panda-maintenance-db` | `POSTGRES_PASSWORD` |
|
||||
| `tomcatwiki/app.env` | `tomcatwiki` | `DB_PASS` |
|
||||
| `tomcatwiki/db.env` | `tomcatwikidb` | `POSTGRES_PASSWORD` |
|
||||
| `sap/banf-test.env` | `banf-fetcher-test` | `SCP_PASSWORD` |
|
||||
| `sap/banf-prod.env` | `banf-fetcher-prod` | `SCP_PASSWORD` |
|
||||
|
||||
The root `.env` supplies YAML interpolation values. Containers receive only
|
||||
variables explicitly listed in their `environment` sections. Service-level
|
||||
`env_file` is a different mechanism and does not supply YAML interpolation.
|
||||
See [Docker's interpolation documentation](https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/).
|
||||
The BANF files reuse the existing `banf_fetcher_password_test` and
|
||||
`banf_fetcher_password_prod` Hiera keys. The `WEBAPP_SECURITY_AUTH_BASIC_USERNAME`
|
||||
and `WEBAPP_SECURITY_AUTH_BASIC_PASSWORD` entries remain inline and unchanged
|
||||
in all four TIA/document-router services.
|
||||
|
||||
Preserve literal dollar signs in env-file values using single quotes, for example
|
||||
`ADMIN_PW_HASH='$2b$12$example-not-a-real-hash'`. Use proper dotenv escaping for
|
||||
embedded quotes; do not shell-source the file. Shell environment variables take
|
||||
precedence over the env file, so run deployment from a controlled environment.
|
||||
Keep actual credentials out of Git and logs. Puppet should restrict file access
|
||||
and disable diffs and plaintext file backups for secrets (`show_diff => false`,
|
||||
`backup => false`).
|
||||
Each service receives only its own file. Stable nonsecret settings remain in
|
||||
`environment:`. The files use `format: raw`: write single-line literal values
|
||||
without adding quotes or doubling dollar signs. Password hashes, quotes, and
|
||||
URI-special characters pass through unchanged. These files are not shell scripts.
|
||||
See [Docker's env-file reference](https://docs.docker.com/reference/compose-file/services/#env_file).
|
||||
|
||||
The optional `WEBHOSTING_ENV_DIR` variable overrides `/etc/webhosting`, for example
|
||||
when validating a temporary set of files. `.env.example` documents this nonsecret
|
||||
setting; it must not replace the production `.env`.
|
||||
|
||||
The existing `/opt/WebHosting/.env` remains in place for applications outside
|
||||
this repository and rollback, including the old BANF entries. Migrated services no longer reference
|
||||
its old credential variables, including overrides of those variables in the shell.
|
||||
There is no fallback to old credentials if a service env file is missing.
|
||||
|
||||
Compose requires all eleven files, including when validating the whole project for
|
||||
a targeted service update. `required: true` verifies file existence only; it does
|
||||
not enforce the keys or non-empty values listed above. Check those values as part
|
||||
of deployment. This replaces the previous `${VARIABLE:?message}` checks for the
|
||||
migrated credentials.
|
||||
|
||||
The root `.env` still supplies YAML interpolation for `WEBHOSTING_ENV_DIR`.
|
||||
It follows normal dotenv quoting rules; service
|
||||
`env_file` does not supply interpolation values to YAML. Keep credentials out of
|
||||
Git and logs. See [Docker's interpolation documentation](https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/).
|
||||
|
||||
## Validate and apply configuration
|
||||
|
||||
From the existing deployment directory, validate using the full Puppet-managed
|
||||
environment file. Keep the deployed Compose project name and directory unchanged.
|
||||
Deploy the Hiera change first and let Puppet create all eleven service env files.
|
||||
Verify their permissions and the non-empty keys listed above before activating
|
||||
this Compose change. Preserve the existing global env file for other applications and rollback.
|
||||
|
||||
Deploy the complete `stacks/` directory alongside the root Compose file. Keep the
|
||||
existing deployment directory and Compose project name. From that directory,
|
||||
validate using the existing global env file and the new service env files:
|
||||
|
||||
```sh
|
||||
docker compose version
|
||||
docker compose --env-file .env config --quiet
|
||||
docker compose --env-file .env config --services
|
||||
```
|
||||
|
||||
Confirm the host runs Compose 2.30.0 or later and the assembled configuration lists
|
||||
all 31 services before applying it.
|
||||
|
||||
Use `--quiet`: plain `docker compose config` and `config --environment` can print
|
||||
resolved secrets. Validation checks the Compose model; it does not test database
|
||||
credentials, application behavior, host mounts, or Nginx configuration.
|
||||
@@ -49,6 +131,12 @@ chain first (the dashboard database depends on the frontend copy job). Avoid a
|
||||
whole-project `down`/`up` for these changes. A plain `restart` does not apply changed
|
||||
container environment variables; see [Docker's restart documentation](https://docs.docker.com/reference/cli/docker/compose/restart/).
|
||||
|
||||
The credential source changes, but its values should match the previous
|
||||
configuration. This is not a password rotation or database upgrade. To roll back,
|
||||
restore the previous Compose revision and apply the affected services using the
|
||||
retained global `.env`. Do not remove that file after this rollout; it still has
|
||||
active consumers.
|
||||
|
||||
Application recreation can change its IP address. The current Nginx upstream
|
||||
configuration resolves static service names at startup/reload. Once the selected
|
||||
application is running, validate and reload the proxy under the existing host
|
||||
@@ -59,8 +147,8 @@ unchanged. See [Nginx upstream resolution](https://nginx.org/en/docs/http/ngx_ht
|
||||
## Database readiness and existing data
|
||||
|
||||
HedgeDoc now uses separate `CMD_DB_*` fields so passwords containing URI-special
|
||||
characters are passed literally. Its database receives the same username and
|
||||
password from `.env`; the previous `{{ ... }}` expressions were literal strings
|
||||
characters are passed literally. Its app and database env files derive their
|
||||
shared credentials from the same Hiera keys; the previous `{{ ... }}` expressions were literal strings
|
||||
to Compose. The LDAP search filter's `{{username}}` is an application placeholder
|
||||
and must remain. See [HedgeDoc configuration](https://docs.hedgedoc.org/configuration/).
|
||||
|
||||
@@ -86,8 +174,8 @@ and networks are preserved in this configuration fix. See the
|
||||
|
||||
## Follow-up organization
|
||||
|
||||
Split Puppet's output into service-specific env files or file secrets before
|
||||
extracting independently operated applications into their own Compose projects.
|
||||
That requires coordinated changes in the Hiera/Puppet repository. Preserve the
|
||||
supplier's SAP/TIA/document-router/BANF definitions; they can later move together
|
||||
into a dedicated directory without changing their configuration style.
|
||||
After verifying the migration on the host, obsolete migrated entries (including
|
||||
the two BANF passwords) can be removed from the global `.env` in a separate Hiera
|
||||
change. Preserve values used by applications outside this repository. File secrets
|
||||
and independent Compose projects can be considered separately. Keep the supplier's
|
||||
inline WebUI authentication entries in `stacks/sap/compose.yaml` unchanged.
|
||||
+39
-550
@@ -1,554 +1,43 @@
|
||||
services:
|
||||
# linux-eng@psi.ch
|
||||
# Reverse Proxy handling all HTTP/HTTPS requests
|
||||
# Only container that is exposed to the network
|
||||
# Communication to other services is trough docker network
|
||||
nginx:
|
||||
image: nginx:latest
|
||||
container_name: nginx_proxy
|
||||
restart: always
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- /etc/letsencrypt/live:/etc/letsencrypt/live:ro
|
||||
- /etc/letsencrypt/archive:/etc/letsencrypt/archive:ro
|
||||
- /etc/pki/tls/certs:/etc/nginx/certs:ro
|
||||
- /etc/pki/tls/private:/etc/nginx/private:ro
|
||||
- /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- /etc/nginx/conf.d:/etc/nginx/conf.d:ro
|
||||
- /opt/webcontent/sinqstatus-test:/opt/webcontent/sinqstatus-test:ro
|
||||
- /opt/webcontent/it-strategy-dashboard/frontend/:/opt/webcontent/it-strategy-dashboard/:ro
|
||||
networks:
|
||||
- public
|
||||
- backend
|
||||
|
||||
# rfwtools
|
||||
# gfa-status-test
|
||||
# fluid-eos
|
||||
# spaceweather
|
||||
apache:
|
||||
image: gitea.psi.ch/images/php-apache:latest
|
||||
container_name: apache_app
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/rfmwtools:/var/www/rfmwtools:ro
|
||||
- /opt/webcontent/cas-status:/var/www/cas-status:rw
|
||||
- /opt/webcontent/fluid-eos:/var/www/fluid-eos:rw
|
||||
- /opt/webcontent/sls2:/var/www/sls2:rw
|
||||
- /opt/webcontent/megwiki:/var/www/megwiki:rw
|
||||
- /opt/webcontent/sinqimaging:/var/www/sinqimaging:rw
|
||||
- /opt/webcontent/omny:/var/www/omny:rw
|
||||
- /mount/srem/webhosting:/var/www/srem:rw
|
||||
- ./apache/conf:/etc/apache2/sites-enabled:ro
|
||||
networks:
|
||||
- backend
|
||||
|
||||
legacy_scheduleit:
|
||||
# image: gitea.psi.ch/images/php-apache:latest
|
||||
image: gitea.psi.ch/images/legacy_scheduleit:latest
|
||||
restart: always
|
||||
container_name: legacy-scheduleit
|
||||
volumes:
|
||||
- /opt/webcontent/lbr-scheduler/code:/var/www/lbr-scheduler:rw
|
||||
- /opt/webcontent/lbr-scheduler/apache/conf:/etc/apache2/sites-enabled:ro
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# linux-eng@psi.ch
|
||||
# Test app
|
||||
excalidraw:
|
||||
image: excalidraw/excalidraw:latest
|
||||
container_name: excalidraw
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# benjamin.brem@psi.ch - LAC
|
||||
# Elog instance
|
||||
lac-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lac-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/lac:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/lac/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# valerio.scagnoli@psi.ch - LMX
|
||||
# Elog instance
|
||||
lmx-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lmx-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/lmx:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/lmx/passwd.txt:/usr/local/elog/passwd.txt
|
||||
- /opt/webcontent/lmx/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Rostomyan Tigran <tigran.rostomyan@psi.ch>
|
||||
# INC0137443
|
||||
# Elog instance
|
||||
pif-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: pif-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/pif:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/pif/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Krieger Jonas Andreas <jonas.krieger@psi.ch>, Raselli Andrea-Raeto <andrea.raselli@psi.ch>
|
||||
# Elog as a Service PoC mit musr-elog.psi.ch? linux-eng@psi.ch
|
||||
lmu-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lmu-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/LMU:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/LMU/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# PEPISCO <andras.boedi@psi.ch> <patrick.hemberger@psi.ch>
|
||||
# PhotoElectron PhotoIon Spectral COmpendium
|
||||
pepisco:
|
||||
image: gitea.psi.ch/images/pepisco:v2026.03.13
|
||||
container_name: pepisco-test
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Romain Sacchi <romain.sacchi@psi.ch>
|
||||
swiss-ecargo:
|
||||
image: gitea.psi.ch/sacchi_r/swiss-ecargo:0.1.2
|
||||
container_name: swiss-ecargo
|
||||
restart: always
|
||||
environment:
|
||||
- HOSTED_API_KEY=${ecargo_api_key:?ecargo_api_key is required}
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Augustin Sven <sven.augustin@psi.ch>
|
||||
# POC for SiwssFel
|
||||
hedgedoc_app:
|
||||
image: quay.io/hedgedoc/hedgedoc:latest
|
||||
container_name: hedgedoc
|
||||
environment:
|
||||
- CMD_DB_DIALECT=postgres
|
||||
- CMD_DB_HOST=hedgedoc_db
|
||||
- CMD_DB_PORT=5432
|
||||
- CMD_DB_DATABASE=hedgedoc
|
||||
- CMD_DB_USERNAME=${hedgedoc_user:?hedgedoc_user is required}
|
||||
- CMD_DB_PASSWORD=${hedgedoc_password:?hedgedoc_password is required}
|
||||
- CMD_DOMAIN=hedgedoc.psi.ch
|
||||
- CMD_URL_ADDPORT=false
|
||||
- CMD_PROTOCOL_USESSL=true
|
||||
- CMD_LDAP_URL=ldaps://dc00.d.psi.ch
|
||||
- CMD_LDAP_BINDDN=${bind_user:?bind_user is required}
|
||||
- CMD_LDAP_BINDCREDENTIALS=${bind_password:?bind_password is required}
|
||||
- CMD_LDAP_SEARCHBASE=OU=users,OU=psi,DC=d,DC=psi,DC=ch
|
||||
- CMD_LDAP_SEARCHFILTER=(&(objectcategory=person)(objectclass=user)(|(sAMAccountName={{username}})(mail={{username}})))
|
||||
- CMD_LDAP_USERIDFIELD=sAMAccountName
|
||||
- CMD_LDAP_PROVIDERNAME=PSI
|
||||
- NODE_ENV=production
|
||||
- CMD_EMAIL=false
|
||||
- CMD_ALLOW_EMAIL_REGISTER=false
|
||||
- CMD_SESSION_SECRET=${session_secret:?session_secret is required}
|
||||
volumes:
|
||||
- /opt/webcontent/sf-hedgedoc/uploads:/hedgedoc/public/uploads
|
||||
restart: always
|
||||
depends_on:
|
||||
hedgedoc_db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- backend
|
||||
- hedgedoc_backend
|
||||
|
||||
# Augustin Sven <sven.augustin@psi.ch>
|
||||
hedgedoc_db:
|
||||
image: postgres:13.4-alpine
|
||||
container_name: hedgedoc_db
|
||||
environment:
|
||||
- POSTGRES_USER=${hedgedoc_user:?hedgedoc_user is required}
|
||||
- POSTGRES_PASSWORD=${hedgedoc_password:?hedgedoc_password is required}
|
||||
- POSTGRES_DB=hedgedoc
|
||||
volumes:
|
||||
- /opt/webcontent/sf-hedgedoc/data:/var/lib/postgresql/data
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
networks:
|
||||
- hedgedoc_backend
|
||||
|
||||
# Flechsig Uwe <uwe.flechsig@psi.ch>
|
||||
# opticswiki
|
||||
# webcontent:
|
||||
# lx-fs-01.psi.ch:/lx_webhosting
|
||||
opticswiki:
|
||||
image: gitea.psi.ch/images/opticswiki:1.8
|
||||
container_name: opticswiki
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/opticswiki/data:/usr/local/apache2/wiki/data
|
||||
- /opt/webcontent/opticswiki/pub:/usr/local/apache2/wiki/pub
|
||||
- /opt/webcontent/opticswiki/working:/usr/local/apache2/wiki/working
|
||||
- /opt/webcontent/opticswiki/lib:/usr/local/apache2/wiki/lib
|
||||
- /opt/webcontent/opticswiki/conf:/usr/local/apache2/conf
|
||||
- /opt/webcontent/opticswiki/htdocs:/usr/local/apache2/htdocs
|
||||
- /opt/webcontent/opticswiki/log:/var/log/apache2
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Flechsig Uwe <uwe.flechsig@psi.ch>
|
||||
# slsbl
|
||||
# webcontent:
|
||||
# lx-fs-01.psi.ch:/lx_webhosting
|
||||
slsbl:
|
||||
image: gitea.psi.ch/images/slsbl:1.0
|
||||
container_name: slsbl
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/slsbl/cgi-bin:/usr/local/apache2/cgi-bin
|
||||
- /opt/webcontent/slsbl/conf:/usr/local/apache2/conf
|
||||
- /opt/webcontent/slsbl/htdocs:/usr/local/apache2/htdocs
|
||||
- /opt/webcontent/slsbl/log:/var/log/apache2
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Angelo Sozzi INC0150655 angelo.sozzi@psi.ch
|
||||
# POC Software - might be installed on docker-dmz
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n
|
||||
container_name: n8n
|
||||
restart: always
|
||||
environment:
|
||||
- N8N_HOST=n8n
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=http
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://n8n.psi.ch
|
||||
- GENERIC_TIMEZONE=Europe/Zurich
|
||||
- DB_SQLITE_POOL_SIZE=4
|
||||
- N8N_RUNNERS_ENABLED=true
|
||||
volumes:
|
||||
- /opt/webcontent/n8n/n8n_data:/home/node/.n8n
|
||||
- /opt/webcontent/n8n/local_files:/files
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Ritter Tom <tom.ritter@psi.ch>
|
||||
# It-Strategy monitoring dashboard
|
||||
|
||||
it-strategy-dashboard-frontend:
|
||||
image: gitea.psi.ch/9501/it-strategy-dashboard-frontend:4.0.4
|
||||
container_name: it-strategy-dashboard-frontend
|
||||
command: ["sh", "-c", "/usr/local/bin/copyData.sh"]
|
||||
volumes:
|
||||
- /opt/webcontent/it-strategy-dashboard/frontend:/opt/webcontent/it-strategy-dashboard/frontend
|
||||
restart: "no"
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
|
||||
it-strategy-dashboard-backend:
|
||||
image: gitea.psi.ch/9501/it-strategy-dashboard-backend:4.0.5
|
||||
container_name: it-strategy-dashboard-backend
|
||||
restart: always
|
||||
environment:
|
||||
- DB_HOST=it-strategy-dashboard-db
|
||||
- DB_PORT=3306
|
||||
- DB_NAME=itstrategy
|
||||
- DB_USER=${IT_DASHBOARD_DB_USER:?IT_DASHBOARD_DB_USER is required}
|
||||
- DB_PASS=${IT_DASHBOARD_DB_PW:?IT_DASHBOARD_DB_PW is required}
|
||||
- JWT_SECRET=${JWT_SECRET:?JWT_SECRET is required}
|
||||
- ADMIN_PW_HASH=${ADMIN_PW_HASH:?ADMIN_PW_HASH is required}
|
||||
depends_on:
|
||||
it-strategy-dashboard-db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
- backend
|
||||
|
||||
it-strategy-dashboard-db:
|
||||
image: mariadb:12
|
||||
container_name: it-strategy-dashboard-db
|
||||
restart: always
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${IT_DASHBOARD_DB_ROOT_PW:?IT_DASHBOARD_DB_ROOT_PW is required}
|
||||
- MYSQL_DATABASE=itstrategy
|
||||
- MYSQL_USER=${IT_DASHBOARD_DB_USER:?IT_DASHBOARD_DB_USER is required}
|
||||
- MYSQL_PASSWORD=${IT_DASHBOARD_DB_PW:?IT_DASHBOARD_DB_PW is required}
|
||||
volumes:
|
||||
- /opt/webcontent/it-strategy-dashboard/mysql/data:/var/lib/mysql
|
||||
depends_on:
|
||||
it-strategy-dashboard-frontend:
|
||||
condition: service_completed_successfully
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
healthcheck:
|
||||
# Authenticate over TCP; do not embed the password in the command arguments.
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- >-
|
||||
MYSQL_PWD="$${MYSQL_PASSWORD}" mariadb --protocol=TCP
|
||||
-h 127.0.0.1 -u "$${MYSQL_USER}" "$${MYSQL_DATABASE}"
|
||||
-e 'SELECT 1' >/dev/null
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
# Christoph Hug <christoph.hug@psi.ch>, Simon Suter <simon.suter@psi.ch>
|
||||
# Panda-Maintenance (OpenMaint)
|
||||
panda-maintenance-db:
|
||||
image: postgis/postgis:17-3.5-alpine
|
||||
container_name: panda-maintenance-db
|
||||
volumes:
|
||||
- /opt/webcontent/panda-maintenance/data:/var/lib/postgresql/data:rw
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=${PANDA_MAINTENANCE_DB_PW:?PANDA_MAINTENANCE_DB_PW is required}
|
||||
restart: always
|
||||
mem_limit: 4000m
|
||||
mem_reservation: 2000m
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 80s
|
||||
networks:
|
||||
- panda_maintenance_backend
|
||||
panda-maintenance-app:
|
||||
image: itmicus/cmdbuild:om-2.4-4.1.0
|
||||
container_name: panda-maintenance-app
|
||||
links:
|
||||
- panda-maintenance-db
|
||||
depends_on:
|
||||
panda-maintenance-db:
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/panda-maintenance/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh:ro
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=${PANDA_MAINTENANCE_DB_PW:?PANDA_MAINTENANCE_DB_PW is required}
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_HOST=panda-maintenance-db
|
||||
- POSTGRES_DB=openmaint
|
||||
- CMDBUILD_DUMP=empty.dump.xz
|
||||
- JAVA_OPTS=-Xmx6000m -Xms3000m
|
||||
mem_limit: 6000m
|
||||
mem_reservation: 3500m
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "-L", "http://localhost:8080/cmdbuild/ui"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
networks:
|
||||
- backend
|
||||
- panda_maintenance_backend
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Archiv Programm von der Firma KGS supportabteilung@kgs-software.com
|
||||
tiacore-test:
|
||||
container_name: tiacore-test
|
||||
image: images.kgs-cloud.de/tia/core/saphttp:3.17.1
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiacore-test/config/license:/application/license
|
||||
- /opt/webcontent/tiacore-test/config/keystore:/application/ssl
|
||||
- /opt/webcontent/tiacore-test/config:/application/config/
|
||||
- /mount/saparchive/testdata:/application/data
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Archiv Programm von der Firma KGS supportabteilung@kgs-software.com
|
||||
tiacore-prod:
|
||||
container_name: tiacore-prod
|
||||
image: images.kgs-cloud.de/tia/core/saphttp:3.17.1
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiacore-prod/config/license:/application/license
|
||||
- /opt/webcontent/tiacore-prod/config/keystore:/application/ssl
|
||||
- /opt/webcontent/tiacore-prod/config:/application/config/
|
||||
- /mount/saparchive/proddata:/application/data
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Document Router von der Firma KGS supportabteilung@kgs-software.com
|
||||
documentrouter-prod:
|
||||
container_name: tiadocrouter-prod
|
||||
image: images.kgs-cloud.de/tia-documentrouter/tia-documentrouter:5.2.0
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-prod/work:/application/work
|
||||
- /opt/webcontent/tiadocrouter-prod/input:/application/input
|
||||
- /opt/webcontent/tiadocrouter-prod/log:/application/log
|
||||
- /opt/webcontent/tiadocrouter-prod/lib:/application/lib
|
||||
- /opt/webcontent/tiadocrouter-prod/config:/application/config
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
CLASSPATH: "/application/lib/sapjco3.jar"
|
||||
LD_LIBRARY_PATH: "/usr/glibc-compat/lib:/application/lib"
|
||||
networks:
|
||||
- backend
|
||||
banf-fetcher-prod:
|
||||
container_name: banf-fetcher-prod
|
||||
image: python:3.12
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-prod/banf-data:/data
|
||||
- /opt/webcontent/tiadocrouter-prod/input:/data/banf-dr
|
||||
environment:
|
||||
- SCP_HOST=filetransfer.openordering.de
|
||||
- SCP_PORT=22
|
||||
- SCP_USER=PSIProduktiv
|
||||
- SCP_PASSWORD=${BANF_FETCHER_PROD_PASSWORD}
|
||||
- SCP_REMOTE_DIR=Anlagen
|
||||
- SCP_HOSTKEY_FINGERPRINT="ssh-rsa 1024 fingerprint"
|
||||
command: >
|
||||
sh -c "pip install paramiko scp lxml &&
|
||||
while true; do python /data/script/banf_ftpload_convert.py; sleep 120; done"
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Document Router von der Firma KGS supportabteilung@kgs-software.com
|
||||
documentrouter-test:
|
||||
container_name: tiadocrouter-test
|
||||
image: images.kgs-cloud.de/tia-documentrouter/tia-documentrouter:5.2.0
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-test/work:/application/work
|
||||
- /opt/webcontent/tiadocrouter-test/input:/application/input
|
||||
- /opt/webcontent/tiadocrouter-test/log:/application/log
|
||||
- /opt/webcontent/tiadocrouter-test/lib:/application/lib
|
||||
- /opt/webcontent/tiadocrouter-test/config:/application/config
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
CLASSPATH: "/application/lib/sapjco3.jar"
|
||||
LD_LIBRARY_PATH: "/usr/glibc-compat/lib:/application/lib"
|
||||
|
||||
networks:
|
||||
- backend
|
||||
banf-fetcher-test:
|
||||
container_name: banf-fetcher-test
|
||||
image: python:3.12
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-test/banf-data:/data
|
||||
- /opt/webcontent/tiadocrouter-test/input:/data/banf-dr
|
||||
environment:
|
||||
- SCP_HOST=filetransfer.test.openordering.de
|
||||
- SCP_PORT=22
|
||||
- SCP_USER=PSITest
|
||||
- SCP_PASSWORD=${BANF_FETCHER_TEST_PASSWORD}
|
||||
- SCP_REMOTE_DIR=Anlagen
|
||||
- SCP_HOSTKEY_FINGERPRINT="ssh-rsa 1024 fingerprint"
|
||||
command: >
|
||||
sh -c "pip install paramiko scp lxml &&
|
||||
while true; do python /data/script/banf_ftpload_convert.py; sleep 120; done"
|
||||
|
||||
# Lange Clemens <clemens.lange@psi.ch>
|
||||
# summer-project-selection.psi.ch
|
||||
summer-project-selection:
|
||||
image: gitea.psi.ch/lange_c/summer-project-selection:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/summer-project-selection/data:/app/data
|
||||
- /opt/webcontent/summer-project-selection/projects:/app/projects
|
||||
- /opt/webcontent/summer-project-selection/applicants:/app/applicants
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Tomcat Beamline Wiki INC0159147 tomcatwiki.psi.ch
|
||||
# goran.lovric@psi.ch
|
||||
tomcatwikidb:
|
||||
image: postgres:15-alpine
|
||||
container_name: tomcatwiki_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=wiki
|
||||
- POSTGRES_PASSWORD=${TOMCATWIKI_DB_SECRET:?TOMCATWIKI_DB_SECRET is required}
|
||||
- POSTGRES_USER=wiki
|
||||
volumes:
|
||||
- /opt/webcontent/tomcatwiki/db-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
networks:
|
||||
- tomcatwiki_backend
|
||||
|
||||
tomcatwiki:
|
||||
image: ghcr.io/requarks/wiki:2
|
||||
container_name: tomcatwiki
|
||||
restart: always
|
||||
depends_on:
|
||||
tomcatwikidb:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- DB_TYPE=postgres
|
||||
- DB_HOST=tomcatwikidb
|
||||
- DB_PORT=5432
|
||||
- DB_USER=wiki
|
||||
- DB_PASS=${TOMCATWIKI_DB_SECRET:?TOMCATWIKI_DB_SECRET is required}
|
||||
- DB_NAME=wiki
|
||||
networks:
|
||||
- tomcatwiki_backend
|
||||
- backend
|
||||
|
||||
scicat-rocrate-dev:
|
||||
image: gitea.psi.ch/data-catalog-services/scicat-rocrate:2.6.0
|
||||
container_name: scicat-rocrate-dev
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
environment:
|
||||
- QUARKUS_REST_CLIENT_SCICAT_URL=https://scicat.development.psi.ch
|
||||
- QUARKUS_REST_CLIENT_S3BROKER_URL=https://scicat-s3-broker.development.psi.ch
|
||||
- QUARKUS_HTTP_LIMITS_MAX_BODY_SIZE=10G
|
||||
volumes:
|
||||
- /opt/webcontent/rocrate-dev/dev:/ro-crate:rw
|
||||
|
||||
# Aimo Altorfer / Roger Kalt - RF
|
||||
# rf-pikett.psi.ch - Pikettlischte Beautifier
|
||||
# Image is built from https://gitea.psi.ch/RF/pikettlischte-beautifier
|
||||
pikettlischte-beautifier:
|
||||
image: gitea.psi.ch/rf/pikettlischte-beautifier:latest
|
||||
container_name: pikettlischte-beautifier
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
# Requires Docker Compose 2.30.0 or later (raw service env files).
|
||||
# Run Compose from this directory to keep the existing project and .env.
|
||||
# All modules resolve relative paths and their default .env from this root.
|
||||
include:
|
||||
- path: stacks/proxy/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/legacy-web/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/excalidraw/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/elog/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/pepisco/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/swiss-ecargo/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/hedgedoc/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/opticswiki/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/slsbl/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/n8n/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/dashboard/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/panda-maintenance/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/sap/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/summer-project-selection/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/tomcatwiki/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/scicat-rocrate/compose.yaml
|
||||
project_directory: .
|
||||
- path: stacks/pikettlischte-beautifier/compose.yaml
|
||||
project_directory: .
|
||||
|
||||
# Network definitions remain shared by the single Compose project.
|
||||
networks:
|
||||
public:
|
||||
backend:
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Ritter Tom <tom.ritter@psi.ch>
|
||||
# It-Strategy monitoring dashboard
|
||||
|
||||
it-strategy-dashboard-frontend:
|
||||
image: gitea.psi.ch/9501/it-strategy-dashboard-frontend:4.0.4
|
||||
container_name: it-strategy-dashboard-frontend
|
||||
command: ["sh", "-c", "/usr/local/bin/copyData.sh"]
|
||||
volumes:
|
||||
- /opt/webcontent/it-strategy-dashboard/frontend:/opt/webcontent/it-strategy-dashboard/frontend
|
||||
restart: "no"
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
|
||||
it-strategy-dashboard-backend:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/dashboard/backend.env
|
||||
required: true
|
||||
format: raw
|
||||
image: gitea.psi.ch/9501/it-strategy-dashboard-backend:4.0.5
|
||||
container_name: it-strategy-dashboard-backend
|
||||
restart: always
|
||||
environment:
|
||||
- DB_HOST=it-strategy-dashboard-db
|
||||
- DB_PORT=3306
|
||||
- DB_NAME=itstrategy
|
||||
depends_on:
|
||||
it-strategy-dashboard-db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
- backend
|
||||
|
||||
it-strategy-dashboard-db:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/dashboard/db.env
|
||||
required: true
|
||||
format: raw
|
||||
image: mariadb:12
|
||||
container_name: it-strategy-dashboard-db
|
||||
restart: always
|
||||
environment:
|
||||
- MYSQL_DATABASE=itstrategy
|
||||
volumes:
|
||||
- /opt/webcontent/it-strategy-dashboard/mysql/data:/var/lib/mysql
|
||||
depends_on:
|
||||
it-strategy-dashboard-frontend:
|
||||
condition: service_completed_successfully
|
||||
networks:
|
||||
- it_strategy_dashboard_backend
|
||||
healthcheck:
|
||||
# Authenticate over TCP; do not embed the password in the command arguments.
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- >-
|
||||
MYSQL_PWD="$${MYSQL_PASSWORD}" mariadb --protocol=TCP
|
||||
-h 127.0.0.1 -u "$${MYSQL_USER}" "$${MYSQL_DATABASE}"
|
||||
-e 'SELECT 1' >/dev/null
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
@@ -0,0 +1,51 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# benjamin.brem@psi.ch - LAC
|
||||
# Elog instance
|
||||
lac-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lac-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/lac:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/lac/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# valerio.scagnoli@psi.ch - LMX
|
||||
# Elog instance
|
||||
lmx-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lmx-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/lmx:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/lmx/passwd.txt:/usr/local/elog/passwd.txt
|
||||
- /opt/webcontent/lmx/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Rostomyan Tigran <tigran.rostomyan@psi.ch>
|
||||
# INC0137443
|
||||
# Elog instance
|
||||
pif-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: pif-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/pif:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/pif/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Krieger Jonas Andreas <jonas.krieger@psi.ch>, Raselli Andrea-Raeto <andrea.raselli@psi.ch>
|
||||
# Elog as a Service PoC mit musr-elog.psi.ch? linux-eng@psi.ch
|
||||
lmu-elog:
|
||||
image: gitea.psi.ch/images/elog:3.1.5
|
||||
container_name: lmu-elog
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/logbooks/LMU:/usr/local/elog/logbooks
|
||||
- /opt/webcontent/LMU/elog.cfg:/usr/local/elog/elogd.cfg
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,10 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# linux-eng@psi.ch
|
||||
# Test app
|
||||
excalidraw:
|
||||
image: excalidraw/excalidraw:latest
|
||||
container_name: excalidraw
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,58 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Augustin Sven <sven.augustin@psi.ch>
|
||||
# POC for SiwssFel
|
||||
hedgedoc_app:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/hedgedoc/app.env
|
||||
required: true
|
||||
format: raw
|
||||
image: quay.io/hedgedoc/hedgedoc:latest
|
||||
container_name: hedgedoc
|
||||
environment:
|
||||
- CMD_DB_DIALECT=postgres
|
||||
- CMD_DB_HOST=hedgedoc_db
|
||||
- CMD_DB_PORT=5432
|
||||
- CMD_DB_DATABASE=hedgedoc
|
||||
- CMD_DOMAIN=hedgedoc.psi.ch
|
||||
- CMD_URL_ADDPORT=false
|
||||
- CMD_PROTOCOL_USESSL=true
|
||||
- CMD_LDAP_URL=ldaps://dc00.d.psi.ch
|
||||
- CMD_LDAP_SEARCHBASE=OU=users,OU=psi,DC=d,DC=psi,DC=ch
|
||||
- CMD_LDAP_SEARCHFILTER=(&(objectcategory=person)(objectclass=user)(|(sAMAccountName={{username}})(mail={{username}})))
|
||||
- CMD_LDAP_USERIDFIELD=sAMAccountName
|
||||
- CMD_LDAP_PROVIDERNAME=PSI
|
||||
- NODE_ENV=production
|
||||
- CMD_EMAIL=false
|
||||
- CMD_ALLOW_EMAIL_REGISTER=false
|
||||
volumes:
|
||||
- /opt/webcontent/sf-hedgedoc/uploads:/hedgedoc/public/uploads
|
||||
restart: always
|
||||
depends_on:
|
||||
hedgedoc_db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- backend
|
||||
- hedgedoc_backend
|
||||
|
||||
# Augustin Sven <sven.augustin@psi.ch>
|
||||
hedgedoc_db:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/hedgedoc/db.env
|
||||
required: true
|
||||
format: raw
|
||||
image: postgres:13.4-alpine
|
||||
container_name: hedgedoc_db
|
||||
environment:
|
||||
- POSTGRES_DB=hedgedoc
|
||||
volumes:
|
||||
- /opt/webcontent/sf-hedgedoc/data:/var/lib/postgresql/data
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
networks:
|
||||
- hedgedoc_backend
|
||||
@@ -0,0 +1,33 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# rfwtools
|
||||
# gfa-status-test
|
||||
# fluid-eos
|
||||
# spaceweather
|
||||
apache:
|
||||
image: gitea.psi.ch/images/php-apache:latest
|
||||
container_name: apache_app
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/rfmwtools:/var/www/rfmwtools:ro
|
||||
- /opt/webcontent/cas-status:/var/www/cas-status:rw
|
||||
- /opt/webcontent/fluid-eos:/var/www/fluid-eos:rw
|
||||
- /opt/webcontent/sls2:/var/www/sls2:rw
|
||||
- /opt/webcontent/megwiki:/var/www/megwiki:rw
|
||||
- /opt/webcontent/sinqimaging:/var/www/sinqimaging:rw
|
||||
- /opt/webcontent/omny:/var/www/omny:rw
|
||||
- /mount/srem/webhosting:/var/www/srem:rw
|
||||
- ./apache/conf:/etc/apache2/sites-enabled:ro
|
||||
networks:
|
||||
- backend
|
||||
|
||||
legacy_scheduleit:
|
||||
# image: gitea.psi.ch/images/php-apache:latest
|
||||
image: gitea.psi.ch/images/legacy_scheduleit:latest
|
||||
restart: always
|
||||
container_name: legacy-scheduleit
|
||||
volumes:
|
||||
- /opt/webcontent/lbr-scheduler/code:/var/www/lbr-scheduler:rw
|
||||
- /opt/webcontent/lbr-scheduler/apache/conf:/etc/apache2/sites-enabled:ro
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,22 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Angelo Sozzi INC0150655 angelo.sozzi@psi.ch
|
||||
# POC Software - might be installed on docker-dmz
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n
|
||||
container_name: n8n
|
||||
restart: always
|
||||
environment:
|
||||
- N8N_HOST=n8n
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=http
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://n8n.psi.ch
|
||||
- GENERIC_TIMEZONE=Europe/Zurich
|
||||
- DB_SQLITE_POOL_SIZE=4
|
||||
- N8N_RUNNERS_ENABLED=true
|
||||
volumes:
|
||||
- /opt/webcontent/n8n/n8n_data:/home/node/.n8n
|
||||
- /opt/webcontent/n8n/local_files:/files
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,20 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Flechsig Uwe <uwe.flechsig@psi.ch>
|
||||
# opticswiki
|
||||
# webcontent:
|
||||
# lx-fs-01.psi.ch:/lx_webhosting
|
||||
opticswiki:
|
||||
image: gitea.psi.ch/images/opticswiki:1.8
|
||||
container_name: opticswiki
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/opticswiki/data:/usr/local/apache2/wiki/data
|
||||
- /opt/webcontent/opticswiki/pub:/usr/local/apache2/wiki/pub
|
||||
- /opt/webcontent/opticswiki/working:/usr/local/apache2/wiki/working
|
||||
- /opt/webcontent/opticswiki/lib:/usr/local/apache2/wiki/lib
|
||||
- /opt/webcontent/opticswiki/conf:/usr/local/apache2/conf
|
||||
- /opt/webcontent/opticswiki/htdocs:/usr/local/apache2/htdocs
|
||||
- /opt/webcontent/opticswiki/log:/var/log/apache2
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,59 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Christoph Hug <christoph.hug@psi.ch>, Simon Suter <simon.suter@psi.ch>
|
||||
# Panda-Maintenance (OpenMaint)
|
||||
panda-maintenance-db:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/panda-maintenance/db.env
|
||||
required: true
|
||||
format: raw
|
||||
image: postgis/postgis:17-3.5-alpine
|
||||
container_name: panda-maintenance-db
|
||||
volumes:
|
||||
- /opt/webcontent/panda-maintenance/data:/var/lib/postgresql/data:rw
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
restart: always
|
||||
mem_limit: 4000m
|
||||
mem_reservation: 2000m
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 80s
|
||||
networks:
|
||||
- panda_maintenance_backend
|
||||
panda-maintenance-app:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/panda-maintenance/app.env
|
||||
required: true
|
||||
format: raw
|
||||
image: itmicus/cmdbuild:om-2.4-4.1.0
|
||||
container_name: panda-maintenance-app
|
||||
links:
|
||||
- panda-maintenance-db
|
||||
depends_on:
|
||||
panda-maintenance-db:
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/panda-maintenance/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh:ro
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_HOST=panda-maintenance-db
|
||||
- POSTGRES_DB=openmaint
|
||||
- CMDBUILD_DUMP=empty.dump.xz
|
||||
- JAVA_OPTS=-Xmx6000m -Xms3000m
|
||||
mem_limit: 6000m
|
||||
mem_reservation: 3500m
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "-L", "http://localhost:8080/cmdbuild/ui"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
networks:
|
||||
- backend
|
||||
- panda_maintenance_backend
|
||||
@@ -0,0 +1,10 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# PEPISCO <andras.boedi@psi.ch> <patrick.hemberger@psi.ch>
|
||||
# PhotoElectron PhotoIon Spectral COmpendium
|
||||
pepisco:
|
||||
image: gitea.psi.ch/images/pepisco:v2026.03.13
|
||||
container_name: pepisco-test
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,11 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Aimo Altorfer / Roger Kalt - RF
|
||||
# rf-pikett.psi.ch - Pikettlischte Beautifier
|
||||
# Image is built from https://gitea.psi.ch/RF/pikettlischte-beautifier
|
||||
pikettlischte-beautifier:
|
||||
image: gitea.psi.ch/rf/pikettlischte-beautifier:latest
|
||||
container_name: pikettlischte-beautifier
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,25 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# linux-eng@psi.ch
|
||||
# Reverse Proxy handling all HTTP/HTTPS requests
|
||||
# Only container that is exposed to the network
|
||||
# Communication to other services is trough docker network
|
||||
nginx:
|
||||
image: nginx:latest
|
||||
container_name: nginx_proxy
|
||||
restart: always
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- /etc/letsencrypt/live:/etc/letsencrypt/live:ro
|
||||
- /etc/letsencrypt/archive:/etc/letsencrypt/archive:ro
|
||||
- /etc/pki/tls/certs:/etc/nginx/certs:ro
|
||||
- /etc/pki/tls/private:/etc/nginx/private:ro
|
||||
- /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- /etc/nginx/conf.d:/etc/nginx/conf.d:ro
|
||||
- /opt/webcontent/sinqstatus-test:/opt/webcontent/sinqstatus-test:ro
|
||||
- /opt/webcontent/it-strategy-dashboard/frontend/:/opt/webcontent/it-strategy-dashboard/:ro
|
||||
networks:
|
||||
- public
|
||||
- backend
|
||||
@@ -0,0 +1,124 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Archiv Programm von der Firma KGS supportabteilung@kgs-software.com
|
||||
tiacore-test:
|
||||
container_name: tiacore-test
|
||||
image: images.kgs-cloud.de/tia/core/saphttp:3.17.1
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiacore-test/config/license:/application/license
|
||||
- /opt/webcontent/tiacore-test/config/keystore:/application/ssl
|
||||
- /opt/webcontent/tiacore-test/config:/application/config/
|
||||
- /mount/saparchive/testdata:/application/data
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Archiv Programm von der Firma KGS supportabteilung@kgs-software.com
|
||||
tiacore-prod:
|
||||
container_name: tiacore-prod
|
||||
image: images.kgs-cloud.de/tia/core/saphttp:3.17.1
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiacore-prod/config/license:/application/license
|
||||
- /opt/webcontent/tiacore-prod/config/keystore:/application/ssl
|
||||
- /opt/webcontent/tiacore-prod/config:/application/config/
|
||||
- /mount/saparchive/proddata:/application/data
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Document Router von der Firma KGS supportabteilung@kgs-software.com
|
||||
documentrouter-prod:
|
||||
container_name: tiadocrouter-prod
|
||||
image: images.kgs-cloud.de/tia-documentrouter/tia-documentrouter:5.2.0
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-prod/work:/application/work
|
||||
- /opt/webcontent/tiadocrouter-prod/input:/application/input
|
||||
- /opt/webcontent/tiadocrouter-prod/log:/application/log
|
||||
- /opt/webcontent/tiadocrouter-prod/lib:/application/lib
|
||||
- /opt/webcontent/tiadocrouter-prod/config:/application/config
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
CLASSPATH: "/application/lib/sapjco3.jar"
|
||||
LD_LIBRARY_PATH: "/usr/glibc-compat/lib:/application/lib"
|
||||
networks:
|
||||
- backend
|
||||
banf-fetcher-prod:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/sap/banf-prod.env
|
||||
required: true
|
||||
format: raw
|
||||
container_name: banf-fetcher-prod
|
||||
image: python:3.12
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-prod/banf-data:/data
|
||||
- /opt/webcontent/tiadocrouter-prod/input:/data/banf-dr
|
||||
environment:
|
||||
- SCP_HOST=filetransfer.openordering.de
|
||||
- SCP_PORT=22
|
||||
- SCP_USER=PSIProduktiv
|
||||
- SCP_REMOTE_DIR=Anlagen
|
||||
- SCP_HOSTKEY_FINGERPRINT="ssh-rsa 1024 fingerprint"
|
||||
command: >
|
||||
sh -c "pip install paramiko scp lxml &&
|
||||
while true; do python /data/script/banf_ftpload_convert.py; sleep 120; done"
|
||||
|
||||
# michael.schmidt@psi.ch
|
||||
# SAP Document Router von der Firma KGS supportabteilung@kgs-software.com
|
||||
documentrouter-test:
|
||||
container_name: tiadocrouter-test
|
||||
image: images.kgs-cloud.de/tia-documentrouter/tia-documentrouter:5.2.0
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-test/work:/application/work
|
||||
- /opt/webcontent/tiadocrouter-test/input:/application/input
|
||||
- /opt/webcontent/tiadocrouter-test/log:/application/log
|
||||
- /opt/webcontent/tiadocrouter-test/lib:/application/lib
|
||||
- /opt/webcontent/tiadocrouter-test/config:/application/config
|
||||
environment:
|
||||
LOGGING_LEVEL_ROOT: INFO
|
||||
# Authentifizierung für WebUI
|
||||
WEBAPP_SECURITY_AUTH_BASIC_USERNAME: psiadmin
|
||||
WEBAPP_SECURITY_AUTH_BASIC_PASSWORD: "$$2y$$10$$LA.TjBKRIDM/c6AJ86BZ/elpa9InzVbzqzLsyfc1Wt7h3S3N8MUPm"
|
||||
CLASSPATH: "/application/lib/sapjco3.jar"
|
||||
LD_LIBRARY_PATH: "/usr/glibc-compat/lib:/application/lib"
|
||||
|
||||
networks:
|
||||
- backend
|
||||
banf-fetcher-test:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/sap/banf-test.env
|
||||
required: true
|
||||
format: raw
|
||||
container_name: banf-fetcher-test
|
||||
image: python:3.12
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/tiadocrouter-test/banf-data:/data
|
||||
- /opt/webcontent/tiadocrouter-test/input:/data/banf-dr
|
||||
environment:
|
||||
- SCP_HOST=filetransfer.test.openordering.de
|
||||
- SCP_PORT=22
|
||||
- SCP_USER=PSITest
|
||||
- SCP_REMOTE_DIR=Anlagen
|
||||
- SCP_HOSTKEY_FINGERPRINT="ssh-rsa 1024 fingerprint"
|
||||
command: >
|
||||
sh -c "pip install paramiko scp lxml &&
|
||||
while true; do python /data/script/banf_ftpload_convert.py; sleep 120; done"
|
||||
@@ -0,0 +1,14 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
scicat-rocrate-dev:
|
||||
image: gitea.psi.ch/data-catalog-services/scicat-rocrate:2.6.0
|
||||
container_name: scicat-rocrate-dev
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
environment:
|
||||
- QUARKUS_REST_CLIENT_SCICAT_URL=https://scicat.development.psi.ch
|
||||
- QUARKUS_REST_CLIENT_S3BROKER_URL=https://scicat-s3-broker.development.psi.ch
|
||||
- QUARKUS_HTTP_LIMITS_MAX_BODY_SIZE=10G
|
||||
volumes:
|
||||
- /opt/webcontent/rocrate-dev/dev:/ro-crate:rw
|
||||
@@ -0,0 +1,17 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Flechsig Uwe <uwe.flechsig@psi.ch>
|
||||
# slsbl
|
||||
# webcontent:
|
||||
# lx-fs-01.psi.ch:/lx_webhosting
|
||||
slsbl:
|
||||
image: gitea.psi.ch/images/slsbl:1.0
|
||||
container_name: slsbl
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/slsbl/cgi-bin:/usr/local/apache2/cgi-bin
|
||||
- /opt/webcontent/slsbl/conf:/usr/local/apache2/conf
|
||||
- /opt/webcontent/slsbl/htdocs:/usr/local/apache2/htdocs
|
||||
- /opt/webcontent/slsbl/log:/var/log/apache2
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,13 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Lange Clemens <clemens.lange@psi.ch>
|
||||
# summer-project-selection.psi.ch
|
||||
summer-project-selection:
|
||||
image: gitea.psi.ch/lange_c/summer-project-selection:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/webcontent/summer-project-selection/data:/app/data
|
||||
- /opt/webcontent/summer-project-selection/projects:/app/projects
|
||||
- /opt/webcontent/summer-project-selection/applicants:/app/applicants
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,13 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Romain Sacchi <romain.sacchi@psi.ch>
|
||||
swiss-ecargo:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/swiss-ecargo/app.env
|
||||
required: true
|
||||
format: raw
|
||||
image: gitea.psi.ch/sacchi_r/swiss-ecargo:0.1.2
|
||||
container_name: swiss-ecargo
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
@@ -0,0 +1,46 @@
|
||||
# Included by ../../docker-compose.yaml; use the root Compose entrypoint.
|
||||
services:
|
||||
# Tomcat Beamline Wiki INC0159147 tomcatwiki.psi.ch
|
||||
# goran.lovric@psi.ch
|
||||
tomcatwikidb:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/tomcatwiki/db.env
|
||||
required: true
|
||||
format: raw
|
||||
image: postgres:15-alpine
|
||||
container_name: tomcatwiki_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=wiki
|
||||
- POSTGRES_USER=wiki
|
||||
volumes:
|
||||
- /opt/webcontent/tomcatwiki/db-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
networks:
|
||||
- tomcatwiki_backend
|
||||
|
||||
tomcatwiki:
|
||||
env_file:
|
||||
- path: ${WEBHOSTING_ENV_DIR:-/etc/webhosting}/tomcatwiki/app.env
|
||||
required: true
|
||||
format: raw
|
||||
image: ghcr.io/requarks/wiki:2
|
||||
container_name: tomcatwiki
|
||||
restart: always
|
||||
depends_on:
|
||||
tomcatwikidb:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- DB_TYPE=postgres
|
||||
- DB_HOST=tomcatwikidb
|
||||
- DB_PORT=5432
|
||||
- DB_USER=wiki
|
||||
- DB_NAME=wiki
|
||||
networks:
|
||||
- tomcatwiki_backend
|
||||
- backend
|
||||
Reference in new issue
Block a user