Skip to main content

Control Plane on Dedicated VDI

This guide covers getting the Control Plane image, configuring it, and starting the Control Plane with Docker Compose on a dedicated VDI or workstation, with no new server. In this mode the Control Plane reads CodeMie CLI session export files, the issue tracker and Git, and keeps all data in local folders.

Overview​

Running the Control Plane on a dedicated VDI takes four steps:

  1. Check the prerequisites.
  2. Get the image.
  3. Get the Compose file and fill in the tokens.
  4. Start the stack and open the Control Plane at http://127.0.0.1:4411.

Prerequisites​

  • Docker with Docker Compose v2
  • Read-only tokens for the issue tracker (Jira) and Git (GitLab, GitHub)
  • Access to the control-plane repository

Getting the Image​

The Control Plane image is available on request.

  1. Optionally pre-pull the image (Compose pulls it automatically on first start):

    docker pull <registry>/control-plane:<version>
  2. Set CONTROL_PLANE_IMAGE to the exact image tag:

    export CONTROL_PLANE_IMAGE=<registry>/control-plane:<version>

CONTROL_PLANE_IMAGE is evaluated by Compose and is not passed to the container. Continue with Getting the Compose File.

Getting the Compose File​

The Compose file is stored in the control-plane repository, in the control-plane-vdi folder. Clone the repository, go to the folder and create the folders for the data:

git clone git@ext.git.epam.com:epm-cdme/control-plane.git
cd control-plane/control-plane-vdi
mkdir -p config data work exports

The folder of the stack looks as follows:

control-plane-vdi/
├── docker-compose.yml
├── config/ # clients, projects, streams, members and sources (YAML)
├── data/ # harvested data and application state (SQLite)
├── work/ # harvest cache, job logs and uploaded files
└── exports/ # CodeMie CLI session export files

Configuring the Environment​

Fill in the tokens in the environment section of docker-compose.yml and remove the lines of the sources that are not used. For the description of all variables, see Control Plane Configuration Reference.

Authentication

The Control Plane on a dedicated VDI runs without sign-in (CP_AUTH_DISABLED=true): every user who reaches the port has full access. The port is published on 127.0.0.1 only, so the UI is available on the host itself. Do not publish it on other addresses.

warning

docker-compose.yml holds the tokens. Restrict access to it and do not commit it back to the repository.

Starting the Stack​

Run the following command from the control-plane-vdi folder:

docker compose up -d

Once the control-plane container reports healthy, open the Control Plane at http://127.0.0.1:4411. The first start opens an empty installation: add a client, its projects, streams and members, and their sources in Settings → Clients.

Managing the Stack​

Run the commands from the control-plane-vdi folder:

TaskCommand
Check statusdocker compose ps
Follow logsdocker compose logs -f control-plane
Apply changesdocker compose up -d
Stop and remove containersdocker compose down
Data

docker compose down keeps the data, and the next start uses it again:

LocationPath in the containerContents
./config/app/config/localClients, projects, streams, members and sources (YAML)
./data/app/dataHarvested data and application state (SQLite)
./work/app/.workHarvest cache, job logs and uploaded files

Deleting ./work keeps the configuration and the harvested data, but removes the uploaded files and the job logs. The next harvest fetches all data from the sources again.

Copying the data

Files in ./config, ./data and ./work can be opened, edited or copied on the host. Stop the stack with docker compose down before copying ./data: SQLite keeps recent changes in extra -wal and -shm files until it closes the database. Do not place ./data in a folder synced by OneDrive or SharePoint.

See Also​