Docker

ubTrace uses Docker extensively for application deployment and internal testing.

Some Docker images are available for users, while others are used only internally.

Because ubTrace requires running multiple applications (typically 2–3) on separate containers, we use docker compose to manage and configure service relationships.

Architecture

../_images/docker_arch.drawio.png

Port mappings

The following ports are used by the ubTrace applications:

Service

Host port

Docker port

ubTrace

7130

7130

Vis-Tree

7140

7140

OIDC

7180

8080

Workflows

Production

For production deployments, follow the instructions in Installation.

Development

For development, use the make <target> shortcut to trigger common actions. Running make without arguments will list all available targets.

You can also use standard Docker commands like docker build and docker compose as needed.

Hint

For more details, see the README file in the repository.

Developing without Docker

It is also possible to run ubTrace and the vis-tree applications in their respective dev servers without docker. To do this simply run npm run dev in each project. In this case ubTrace loads the config file .env.development (on top of .env, that is the values .env.development take precedence). This file overwrites the environment variable UBTRACE_SERVER_SIDEBAR_APPS_CONFIG so that ubTrace will look for the vis-tree at its dev server port (5173).

Production-like Setup

To create a production-like environment, run:

make prod

This installs everything for the version specified in the VERSION file. You can check out older tags and quickly get a system running that matches the checked-out source code.

Local Production Setup

To start a production-like environment, which is taking your local changes into account, run:

make local_prod_build
make local_prod_up

This setup is using the docker-compose-local.yml file.

The make targets are just a shortcut for docker compose -f docker-compose-local.yml up --build

Development Setup

To set up a development environment and build the required documentation, run:

make all_showcase

This will build the docs and store them in the local output folder of your current working tree.

Testing

There are three level of what to test:

  1. The current production setup

  2. An old production setup

  3. A production setup based on the local Dockerfiles

Production setup execute

docker-compose -f docs/docker-compose.yml up

This will download the latest images from the used Docker registry.

As alternative, you can also follow Installation.

Old Production Setup

docker-compose -f docker-compose-prod.yml up

This will download the specific images from the used Docker registry. The images are selected by the version string given inside /VERSION.

Local Production Setup

docker-compose -f docker-compose-local.yml build --no-cache
docker-compose -f docker-compose-local.yml up

For this approach the Docker images need to be built locally.

--no-cache makes sure that it is some kind of a safe, clean build, but it takes much longer.

As shortcut you can also use:

make local_prod_build
make local_prod_up