Skip to main content
Answer

How to run multiple Universal containers side-by-side

  • June 28, 2025
  • 2 replies
  • 16 views

Forum|alt.badge.img+13

I'd like to be able to run multiple Docker containers with Universal GUI so each one can have its own default meta server and application. Using the documented Docker compose method with Traefik I've tried to add a pathprefix for Universal GUI just like with Indicium but it doesn't work.

Can Universal be served under a URL with the format https://host/pathprefix and if so what's a working config?

Follow-up of 

 

Best answer by Roland

After some more researching I understand now this can't work because, unlike Indicium, Universal doesn't have a base path setting and always runs under its own root path. The only solutions are using different ports or different subdomains of which the latter is probably the preferred method. I can't setup subdomains myself so I'll have to take this up with the right department.

This topic has been closed for replies.

2 replies

Forum|alt.badge.img+13
  • Author
  • Hero
  • June 29, 2025

Currently I’m trying to make Universal available via the URL http://server/erp but I get a 404 not found. This is my docker-compose.yaml:

---
services:
proxy:
image: traefik
ports:
- 80:80
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web1.address=:80"
- "--entrypoints.web2.address=:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"

universal_prod:
image: registry.thinkwisesoftware.com/public/universal:${TAGPROD}
environment:
- SERVICE_URL=http://${EXTERNAL_HOST}/indicium/iam/iam
- DEFAULT_APPLICATION=ERP
labels:
- "traefik.enable=true"
- "traefik.http.routers.universal_prod.entrypoints=web2"
- "traefik.http.routers.frontend.rule=(Host(`${EXTERNAL_HOST}` && PathPrefix(`/erp`))"

indicium_prod:
image: registry.thinkwisesoftware.com/public/indicium:${TAGPROD}
environment:
- SQL_SERVER=${SQL_SERVER_PROD}
- SQL_DATABASE=${SQL_DATABASE_PROD}
- SQL_USERNAME=${SQL_USERNAME_PROD}
- SQL_PASSWORD=${SQL_PASSWORD_PROD}
- ENABLE_REVERSE_PROXY=true
- ALLOWED_HEADERS=All
- TRUSTED_NETWORKS=0.0.0.0/0
- EXTERNAL_PATH_BASE=/indicium
- CUSTOM_JSON={"Agent":{"Enabled":false}}
labels:
- "traefik.enable=true"
- "traefik.http.routers.indicium_prod.entrypoints=web2"
- "traefik.http.routers.backend.rule=(Host(`${EXTERNAL_HOST}`) && PathPrefix(`/indicium`))"
- "traefik.http.middlewares.backend.stripprefix.prefixes=/indicium"
- "traefik.http.routers.backend.middlewares=backend"

This config works without issues when I leave out the && PathPrefix(`/erp`) part for the universal_prod container which then makes the Universal GUI available via http://server directly.


Forum|alt.badge.img+13
  • Author
  • Hero
  • Answer
  • June 29, 2025

After some more researching I understand now this can't work because, unlike Indicium, Universal doesn't have a base path setting and always runs under its own root path. The only solutions are using different ports or different subdomains of which the latter is probably the preferred method. I can't setup subdomains myself so I'll have to take this up with the right department.