Run in Docker
This page shows how to run Enterprise Glossary in Docker and how to configure the synchronization service.
The Xtract Universal.iQ Enterprise Glossary setup package contains everything needed to run Enterprise Glossary in a container. The package consists of the following files:
| File / Folder | Description |
|---|---|
enterpriseglossary-<version>.tar | Pre-built Docker/Podman image for the web application |
enterpriseglossary-sync-<version>.tar | Pre-built Docker/Podman image for the sync service (may be absent if not built) |
docker-compose.yml | Compose definition for both services, volumes, and networking |
.env | All configurable settings (ports, image tags, secrets), see Configuration Reference |
run.ps1 | Launch script for Docker (Windows or Linux with PowerShell) |
run-podman.ps1 | Launch script for Podman (Windows or Linux with PowerShell) |
stop.ps1 | Stops the Docker stack |
certs/ | Place your TLS certificate (eg.pfx) here before starting. |
README.md | Quick-start reference |
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.
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:
- Docker Desktop
- Administrator rights
- Access to a Microsoft SQL Server
Load Container Images and Start the Containers
To run the Enterprise Glossary container stack:
- Choose a folder where you want to install Enterprise Glossary. The folder is referred to as
<deployment-folder>in the following steps. -
Copy the content of the Xtract Universal.iQ Enterprise Glossary setup package into
<deployment-folder>. The<deployment-folder>should contain the following files:<deployment-folder>/ ├── enterpriseglossary-<version>.tar ├── enterpriseglossary-sync-<version>.tar ├── docker-compose.yml ├── .env ├── run.ps1 ├── run-podman.ps1 ├── stop.ps1 ├── certs/ └── README.mdIf the
certs/folder does not exist, create it. -
Provide a Transport Layer Security (TLS) certificate with 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
<deployment-folder>/certs/eg.pfx
-
Open the
.envfile in a text editor of your choice and setCERT_PASSWORDto the password of youreg.pfx:.env FileIMAGE_REGISTRY=localhost IMAGE_WEB_NAME=enterpriseglossary IMAGE_SYNC_NAME=enterpriseglossary-sync IMAGE_TAG=1.2.3 PROJECT_NAME=enterpriseglossary-project # Ports exposed to the host WEB_HTTP_PORT=8080 WEB_HTTPS_PORT=8443 # Container ports (do not change unless the app listens on other ports) CONTAINER_HTTP_PORT=8080 CONTAINER_HTTPS_PORT=8443 # Secrets CERT_PASSWORD=ChangeMe123! # change to your password set in the .env JWT_SECRET_KEY=<keep the value generated by the build>For more information about the
.envfile settings, see Configuration Reference. -
Run the PowerShell script
.\run.ps1to create and run the Docker stack. The script accepts the following optional parameters:Parameter Default Description -EnvPath.envPath to an alternative .envfile.-ForceRecreate(off) Tears down and recreates containers even if already running. no parameter Creates both containers. -EgWebCreates only the web container. -EGSyncCreates only the sync container -EgWeb -EgSyncCreates both containers, like when no parameter is used. -
After the script finishes successfully, open a web browser and navigate to one of the following URLs. Replace
8080and8443with the port numbers configured in the.envfile:- HTTP:
http://localhost:8080 - HTTPS:
https://localhost:8443
- HTTP:
The Enterprise Glossary containers are up and running.
Next, configure the synchronization service container.
Configure the Synchronization Service
To connect the synchronization service to Enterprise Glossary:
- Log in to Enterprise Glossary as an administrator and navigate to Settings > Synchronization Jobs > Download Config to download the
Config.xmlfile. - Open the downloaded
Config.xmlfile in a text editor of your choice and replacelocalhostwithwebin the URL field:<Url>https://localhost:8443/</Url>becomes<Url>https://web:8443/</Url> -
Find the exact name of the running synchronization service container by running:
-
Copy the modified
Config.xmlfile into the configuration directory of the running synchronization service container: -
Restart the synchronization service container for the changes to take effect:
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 |
| "Missing image TAR" | TAR file not next to the scripts | Ensure *.tar files are in the same directory as run.ps1 |
| 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:
- On your host machine, open the directory that contains your Enterprise Glossary images and the
run.ps1file. - Replace the
enterpriseglossary-<version>.tarand theenterpriseglossary-sync-<version>.tarfile with the new image files. - Open the
.envfile in a text editor and update the version number in theIMAGE_TAGentry. Alternatively, replace the.envfile with the new.envfile and change the certificate password in the new.envfile. - Stop the running stack using the PowerShell script
stop.ps1. - Load the new images using the PowerShell script
run.ps1. -
Open a web browser and navigate to one of the following URLs. Replace
8080and8443with the port numbers configured in the.envfile:- 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_REGISTRY | localhost | Image registry prefix. Do not change for offline deployments - the TAR images are tagged with localhost/. |
IMAGE_WEB_NAME | enterpriseglossary | Name of the web image (must match the .tar filename prefix). |
IMAGE_SYNC_NAME | enterpriseglossary-sync | Name of the sync service image (must match the .tar filename prefix). |
IMAGE_TAG | (build version) | Image version tag (e.g., 1.2.3). Must match the .tar filename suffix. |
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. |
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/healthevery 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 onlocalhost)
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. |
