Skip to content

Run in Docker

This page shows how to run Enterprise Glossary in Docker and how to configure the synchronization service.

About the Enterprise Glossary Containers

Enterprise Glossary runs in two containers:

  • The web service hosts the Enterprise Glossary application and user interface.
  • The sync service executes synchronization jobs and imports metadata into Enterprise Glossary.

The graphic below shows which systems the Enterprise Glossary containers access and interact with.

eg-architecture

Note

The Microsoft SQL Server is a prerequisite and is not included with Enterprise Glossary. You must provide and maintain the SQL Server environment.

For more information, see System Requirements.

Prerequisites

To run in a Docker environment, Enterprise Glossary requires:

  • Credentials for the Theobald Software container registry and a (demo) license, see Download Trial.
  • Docker Desktop.
  • Administrator rights.
  • Access to a Microsoft SQL Server.
  • Download the setup.zip below. It contains scripts and a .env file used for the container setup.
  • Credentials for the Theobald Software container registry and a (demo) license, see Download Trial.
  • Docker Engine.
  • A user account with permission to run Docker commands.
  • Access to a Microsoft SQL Server.
  • Download the setup.zip below. It contains scripts and a .env file used for the container setup.

Download Scripts (setup.zip)

The setup.zip archive contains the following files:

File Description
docker-compose.yml Defines services and volumes.
.env Editable config: ports, tag, secrets, see Configuration Reference.
run.ps1 PowerShell script to run containers with Docker.
run-podman.ps1 PowerShell script to run containers with Podman.
stop.ps1 PowerShell script to stop Docker containers.

Pull the Container Image

To pull the Enterprise GLossary images from the Theobald Software container registry:

  1. Start Docker Desktop / Docker Engine.
  2. Open a terminal, e.g., PowerShell on Windows.
  3. Use the following command to log in to the Theobald Software container registry:

    docker login registry.theobald-software.com
    
  4. When prompted, provide your credentials. Note that the password is not displayed in the terminal when typing.

  5. Use the following commands to pull the Xtract Universal.iQ Enterprise Glossary images:

    docker pull registry.theobald-software.com/theobald-software/enterpriseglossary-sync:latest
    docker pull registry.theobald-software.com/theobald-software/enterpriseglossary:latest
    

    Pulling the images might take some time.

The Xtract Universal.iQ Enterprise Glossary images is now available in Docker.

Next, prepare a certificate for secure communication.

Tip

To check if the images were pulled correctly, open Docker Desktop and go to the Images menu. Alternatively, use the docker image ls command.

Provide a Certificate

It is recommended to set up Transport Layer Security (TLS) for the Enterprise Glossary container. To provide a certificate for TLS:

  1. Create a dedicated folder on the machine that runs the Enterprise Glossary containers, e.g., C:\Docker\enterprise-glossary\.
  2. Inside that folder, create a subfolder certs/ where you can store certificates.
  3. Provide a Transport Layer Security (TLS) certificate to set up secure communication between clients and the Enterprise Glossary. The certificates requires the following properties:
    • Use an organization provided certificate or create your certificate.
    • The certificate must be provided as a .pfx file. The filename must be eg.pfx.
    • Note the password of the .pfx file for later use.
    • Copy the file to /certs/eg.pfx
  4. Extract the content of the setup.zip archive into the root folder.
  5. Open the .env file in a text editor of your choice and set CERT_PASSWORD to the password of your eg.pfx.

After creating the container, the Enterprise Glossary web UI is accessible via HTTPS protocol.

Next, create the container.

Create the Container

To create and run the Enterprise Glossary Docker stack, run the PowerShell script run.ps1 provided in the setup.zip archive. The script accepts the following optional parameters:

Parameter Default Description
-EnvPath .env Path to an alternative .env file.
-ForceRecreate (off) Tears down and recreates containers even if already running.
no parameter Creates both containers.
-EgWeb Creates only the web container.
-EGSync Creates only the sync container
-EgWeb -EgSync Creates both containers, like when no parameter is used.

Note

You might have to load the images manually before running the stack:

docker load -i .\enterpriseglossary-<version>.tar
docker load -i .\enterpriseglossary-sync-<version>.tar

After the script finishes successfully, open a web browser and navigate to one of the following URLs. Replace 8080 and 8443 with the port numbers configured in the .env file:

  • HTTP: http://localhost:8080
  • HTTPS: https://localhost:8443

The Enterprise Glossary containers are up and running.

Next, configure the synchronization service container.

Configure the Synchronization Service

The synchronization server loads data into the Enterprise Glossary. To connect the synchronization service to Enterprise Glossary:

  1. Log in to Enterprise Glossary at https://localhost:8443 as an administrator.
  2. Navigate to Settings > Synchronization Jobs > Download Config to download the Config.xml file.
  3. Open the Config.xml file in a text editor of your choice and replace localhost with web in the URL field. Example: <Url>https://localhost:8443/</Url> becomes <Url>https://web:8443/</Url>.
  4. Use the following command to find the name of the running synchronization service container:

    docker ps --filter "name=sync" --format "{{.Names}}"
    
  5. Copy the modified Config.xml file into the configuration directory of the running synchronization service container:

    docker cp /home/<username>/Config.xml <sync-service-container-name>:/app/config/Config.xml
    
  6. Restart the synchronization service container for the changes to take effect:

    docker restart <sync-service-container-name>
    

The synchronization service now connects to Enterprise Glossary.

For information on common container scenarios, see Knowledge Base: Container Mainentance.

Common Errors

Symptom Cause Fix
run.ps1 fails with ".env not found" Script not run from the deployment folder cd into the extracted folder first
Port conflict ("address already in use") Another process uses 8080/8443 Change WEB_HTTP_PORT / WEB_HTTPS_PORT in .env
HTTPS certificate error in browser Self-signed or untrusted certificate Expected for test certificates - click through the warning, or import the CA
Health check failing App still starting or cert mismatch Wait 60 s; verify CERT_PASSWORD matches eg.pfx
Sync service keeps restarting Config.xml missing or invalid Place a valid Config.xml in the sync-config volume

Update Enterprise Glossary

To update Xtract Universal.iQ Enterprise Glossary to a new version, load a new version of the image, adjust the .env file and start a new container from that image:

  1. Open the .env file in a text editor and update the version number in the IMAGE_TAG entry. Alternatively, replace the .env file with the new .env file and change the certificate password in the new .env file.
  2. Stop the running stack using the PowerShell script stop.ps1.
  3. Load the new images using the PowerShell script run.ps1.
  4. Open a web browser and navigate to one of the following URLs. Replace 8080 and 8443 with the port numbers configured in the .env file:

    • HTTP: http://localhost:8080
    • HTTPS: https://localhost:8443

The containers runs with the updated Enterprise Glossary version and your existing configuration.

Troubleshooting

Symptom Cause Fix
App still shows old version. Old image cached under same tag. Check IMAGE_TAG in .env; run docker images | grep enterpriseglossary to verify the new tag was loaded.
"Missing image TAR" error. TAR file not in deployment folder. Copy both TAR files next to run.ps1 before starting.
Health check failing. The application is still initializing. Wait up to 60 s; check with docker compose logs -f web.

Configuration Reference

The .env file contains the following settings:

Variable Default Description
IMAGE_WEB_NAME enterpriseglossary Name of the web image.
IMAGE_SYNC_NAME enterpriseglossary-sync Name of the sync service image.
PROJECT_NAME enterpriseglossary-project Compose project name. Useful if running multiple instances side-by-side --- give each a unique name.
WEB_HTTP_PORT 8080 Host port mapped to the web container's HTTP endpoint. Change if 8080 is already in use.
WEB_HTTPS_PORT 8443 Host port mapped to the web container's HTTPS endpoint. Change if 8443 is already in use.
CONTAINER_HTTP_PORT 8080 Port the app listens on inside the container. Do not change unless the application was built with a different port.
CONTAINER_HTTPS_PORT 8443 Same as above, for HTTPS. Do not change unless explicitly instructed.
CERT_PASSWORD (set by build) Password for the eg.pfx certificate file in certs/. Must match the actual PFX password.
JWT_SECRET_KEY (set by build) Secret key used for JWT token signing. Must be consistent across restarts to keep user sessions valid.

For information on common container scenarios, see Knowledge Base: Container Mainentance.

Web Service Container

Configuration:

  • Restart policy: unless-stopped.
  • Memory limit: 14 GB.
  • Memory reservation: 12 GB.
  • Health check: curl -f -k https://localhost:<CONTAINER_HTTPS_PORT>/diagnostics/health every 30 seconds, with a 60-second startup grace period.
  • extra_hosts: host.docker.internal:host-gateway (allows the container to access services running on the Docker host, e.g., a database on localhost)

Volumes:

Volume Mount Point Purpose
app-data /app/App_Data Application data, including database files and configuration. Persistent.
uploads /app/wwwroot/uploads User-uploaded files. Persistent.
./certs (read-only bind mount) /app/certs TLS certificate (eg.pfx).

Sync Service Container

Configuration:

  • Restart policy: always.
  • Memory limit: 5 GB.
  • Memory reservation: 512 MB.
  • Depends on: web (waits for a healthy status)
  • Command: --configFile=/app/config/Config.xml

Volumes:

Volume Mount Point Purpose
sync-config /app/config Synchronization configuration (Config.xml). Persistent. Place or edit the configuration file in this volume.
sync-logs /app/Logs Synchronization log files. Persistent.

Environment variables:

Variable Value Purpose
DOTNET_ENVIRONMENT Production Sets the .NET hosting environment.
DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT true Enables HTTP/2 support for gRPC and SignalR communication.
LD_LIBRARY_PATH /app/runtimes/linux-x64/native Ensures native SAP libraries can be located and loaded.

Last update: October 19, 2026