Skip to main content
Solved

How to run multiple Universal containers side-by-side


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.

View original
Did this topic help you find an answer to your question?

2 replies

Forum|alt.badge.img+13
  • Author
  • Hero
  • 155 replies
  • 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
  • 155 replies
  • 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.


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings