Skip to content

Setting up a development environment#

Quick start#

Make sure you have the necessary prerequisites installed (see below for detailed instructions).

  • Docker / Docker Compose
  • WSL2 (Windows Subsystem for Linux 2) - only required for Windows

Then run the following command to download the setup script to install QCrBox in the current folder.

$ bash <(curl -fsSL https://raw.githubusercontent.com/QCrBox/QCrBox/dev/scripts/qcrbox_setup.sh)

If you prefer to inspect the script before running it, you can download it first and then run it manually:

$ curl -fsSL https://raw.githubusercontent.com/QCrBox/QCrBox/dev/scripts/qcrbox_setup.sh > qcrbox_setup.sh
$ bash qcrbox_setup.sh

Info

If you are using Windows, make sure to run the above command in a WSL2 terminal, not in PowerShell or the Windows command prompt.

The setup script will give you the option to automatically install Devbox and Nix (if they are not already installed). Then it will clone the QCrBox repository and create an isolated development environment inside it. This development environment includes a virtual environment for the pyqcrbox Python package and all other dependencies needed to run and develop QCrBox. Once installation is complete, you can activate the development shell by running devbox shell within the QCrBox base folder.

QCrBox relies on Devbox to provide a consistent development environment. Internally, Devbox uses the Nix package manager to install packages into isolated environments.

The QCrBox setup script will give you the option to automatically install Devbox and Nix if they are not already installed.

Verify the installation#

Verify that we can now run the qcb command line tool, which is the main CLI interface for interacting with QCrBx from the command line.

$ qcb

 Usage: qcb [OPTIONS] COMMAND [ARGS]...                                         

 Command line interface for the Quantum Crystallography Toolbox.                

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --verbose  -v    Enables verbose mode (will print debugging messages about   │
│                  actions performed). [default: False]                        │
│ --help     -h    Show this message and exit.                                 │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ build       Build QCrBox components.                                         │
│ up          Start up QCrBox components.                                      │
│ down        Shut down QCrBox components.                                     │
│ list        List registered resources (applications, commands, etc.).        │
│ init        Create boilerplate template for a new application.               │
│ validate    Check application spec yaml file for errors.                     │
│ version     Print the pyqcrbox version.                                      │
╰──────────────────────────────────────────────────────────────────────────────╯
$ qcb version
0.1.dev1+gd64be531b
$ qcb list components
2025-11-05 14:44:42.105 | INFO     | pyqcrbox.cli.helpers.compose_file_config:get_development_config:80 - Using development configuration
qcrbox-nats
qcrbox-registry
cod_check
crysalis-pro
crystal-explorer
dummy_cli
dummy_gui
eval1x
mopro
olex2
qcrbox_quality
qcrboxtools
shelx
xharpy-gpaw
qcrbox-syslog
qcrbox-reverse-proxy
$ qcb list components --all
2025-11-05 14:44:43.442 | INFO     | pyqcrbox.cli.helpers.compose_file_config:get_development_config:80 - Using development configuration
base-ancestor
base-application
base-novnc
base-wine
qcrbox-nats
qcrbox-registry
cod_check
crysalis-pro
crystal-explorer
dummy_cli
dummy_gui
eval1x
mopro
olex2
qcrbox_quality
qcrboxtools
shelx
xharpy-gpaw
qcrbox-syslog
qcrbox-reverse-proxy

Build a container to test the installation#

Try building a component by typing:

$ qcb build qcrboxtools
2025-11-05 14:44:44.773 | INFO     | pyqcrbox.cli.helpers.compose_file_config:get_development_config:80 - Using development configuration
Building the following components (including dependencies): qcrboxtools

2025-11-05 14:44:44.836 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrboxtools with dependencies: ['task_build_service:base-application', 'task_build_service:qcrbox-registry']
2025-11-05 14:44:44.836 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:44:44.836 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:44:44.838 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:44:44.838 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:44:44.840 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:44:44.840 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:44:44.840 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:44:44.840 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:44:44.840 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:44:44.865 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:81 - Building Python package: pyqcrbox
Building wheel...
/home/runner/.cache/uv/builds-v0/.tmpLf0Z4a/lib/python3.11/site-packages/setuptools_scm/git.py:202: UserWarning: "/home/runner/work/QCrBox/QCrBox" is shallow and may cause errors
  warnings.warn(f'"{wd.path}" is shallow and may cause errors')
Successfully built /home/runner/work/QCrBox/QCrBox/services/base_images/base_ancestor/pyqcrbox_dist/pyqcrbox-0.1.dev1+gd64be531b-py3-none-any.whl
2025-11-05 14:44:45.387 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:70 - Pulling/cloning QCrBoxTools repo in /home/runner/work/QCrBox/QCrBox/.build/QCrBoxTools ...
fatal: cannot change to '/home/runner/work/QCrBox/QCrBox/.build/QCrBoxTools': No such file or directory
Cloning into '/home/runner/work/QCrBox/QCrBox/.build/QCrBoxTools'...
2025-11-05 14:44:46.112 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:106 - Building Python package: qcrboxtools
Building wheel...
Successfully built /home/runner/work/QCrBox/QCrBox/services/base_images/base_ancestor/pyqcrbox_dist/qcrboxtools-0.0.5-py3-none-any.whl
2025-11-05 14:44:46.371 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-ancestor
2025-11-05 14:44:46.371 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-ancestor'
2025-11-05 14:44:46.371 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:31.010 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-application
2025-11-05 14:46:31.010 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-application'
2025-11-05 14:46:31.011 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:34.231 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: qcrbox-nats
2025-11-05 14:46:34.231 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build qcrbox-nats'
2025-11-05 14:46:34.231 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:37.045 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: qcrbox-registry
2025-11-05 14:46:37.045 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build qcrbox-registry'
2025-11-05 14:46:37.046 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:40.904 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: qcrboxtools
2025-11-05 14:46:40.905 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build qcrboxtools'
2025-11-05 14:46:40.905 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b

Restart QCrBox#

In the event of disaster, it is possible to destroy the containers and restart QCrBox by using a Devbox script,

devbox run restart

Build the set of currently created QCrBox containers#

Some of the components rely on software that is not independedly distributable. How to get the necessary files is descibed here (you only need the ones not marked as "support in development")

After these have been have been added, you can build all the components using:

2025-11-05 14:46:45.485 | INFO     | pyqcrbox.cli.helpers.compose_file_config:get_development_config:80 - Using development configuration
Building the following components (including dependencies): mopro, xharpy-gpaw, qcrbox_quality, olex2, cod_check, qcrboxtools, crystal-explorer

2025-11-05 14:46:45.551 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building mopro with dependencies: ['task_build_service:base-wine', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.551 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-wine with dependencies: ['task_build_service:base-novnc']
2025-11-05 14:46:45.552 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-novnc with dependencies: ['task_build_service:base-application']
2025-11-05 14:46:45.552 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.552 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.554 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.554 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building xharpy-gpaw with dependencies: ['task_build_service:base-application', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.556 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:140 - Found 1 prebuild script(s) for 'xharpy-gpaw'
2025-11-05 14:46:45.557 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.557 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.558 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.559 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.560 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.560 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.560 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.560 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.560 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.561 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox_quality with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.561 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.562 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.563 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.564 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.564 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.564 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.564 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.565 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.565 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building olex2 with dependencies: ['task_build_service:base-novnc', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.565 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:140 - Found 1 prebuild script(s) for 'olex2'
2025-11-05 14:46:45.565 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-novnc with dependencies: ['task_build_service:base-application']
2025-11-05 14:46:45.565 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.566 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.567 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.567 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building cod_check with dependencies: ['task_build_service:base-application', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.569 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.570 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.571 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.571 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.573 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.573 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.573 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.573 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.573 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.574 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrboxtools with dependencies: ['task_build_service:base-application', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.574 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.574 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.575 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.576 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.577 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.577 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.577 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building crystal-explorer with dependencies: ['task_build_service:base-novnc', 'task_build_service:qcrbox-registry']
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:140 - Found 1 prebuild script(s) for 'crystal-explorer'
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-novnc with dependencies: ['task_build_service:base-application']
2025-11-05 14:46:45.578 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-application with dependencies: ['task_build_service:base-ancestor']
2025-11-05 14:46:45.579 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.581 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-registry with dependencies: ['task_build_service:base-ancestor', 'task_build_service:qcrbox-nats', 'task_build_service:qcrbox-reverse-proxy', 'task_build_service:qcrbox-syslog']
2025-11-05 14:46:45.581 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building base-ancestor with dependencies: ['task_build_python_package:pyqcrbox']
2025-11-05 14:46:45.582 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-nats with dependencies: []
2025-11-05 14:46:45.583 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-reverse-proxy with dependencies: []
2025-11-05 14:46:45.583 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-reverse-proxy', nothing to do.
2025-11-05 14:46:45.583 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:133 - Building qcrbox-syslog with dependencies: []
2025-11-05 14:46:45.583 | DEBUG    | pyqcrbox.cli.subcommands.build:task_build_docker_image:146 - No local build context found for service 'qcrbox-syslog', nothing to do.
2025-11-05 14:46:45.602 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:81 - Building Python package: pyqcrbox
Building wheel...
/home/runner/.cache/uv/builds-v0/.tmpgqvwKI/lib/python3.11/site-packages/setuptools_scm/git.py:202: UserWarning: "/home/runner/work/QCrBox/QCrBox" is shallow and may cause errors
  warnings.warn(f'"{wd.path}" is shallow and may cause errors')
Successfully built /home/runner/work/QCrBox/QCrBox/services/base_images/base_ancestor/pyqcrbox_dist/pyqcrbox-0.1.dev1+gd64be531b-py3-none-any.whl
2025-11-05 14:46:46.127 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:70 - Pulling/cloning QCrBoxTools repo in /home/runner/work/QCrBox/QCrBox/.build/QCrBoxTools ...
Already up to date.
2025-11-05 14:46:46.464 | INFO     | pyqcrbox.cli.subcommands.build:<lambda>:106 - Building Python package: qcrboxtools
Building wheel...
Successfully built /home/runner/work/QCrBox/QCrBox/services/base_images/base_ancestor/pyqcrbox_dist/qcrboxtools-0.0.5-py3-none-any.whl
2025-11-05 14:46:46.721 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-ancestor
2025-11-05 14:46:46.721 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-ancestor'
2025-11-05 14:46:46.721 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:47.393 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-application
2025-11-05 14:46:47.393 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-application'
2025-11-05 14:46:47.393 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:46:47.819 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-novnc
2025-11-05 14:46:47.819 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-novnc'
2025-11-05 14:46:47.819 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:47:45.219 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: base-wine
2025-11-05 14:47:45.220 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build base-wine'
2025-11-05 14:47:45.220 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:50:51.081 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: qcrbox-nats
2025-11-05 14:50:51.081 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build qcrbox-nats'
2025-11-05 14:50:51.081 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:50:53.034 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: qcrbox-registry
2025-11-05 14:50:53.034 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build qcrbox-registry'
2025-11-05 14:50:53.034 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
2025-11-05 14:50:53.453 | INFO     | pyqcrbox.cli.helpers.docker_project:build_single_docker_image:41 - Building docker image: mopro
2025-11-05 14:50:53.453 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:68 - Running docker compose command: '/usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build mopro'
2025-11-05 14:50:53.453 | DEBUG    | pyqcrbox.cli.helpers.docker_project:run_docker_compose_command:72 - Current pyqcrbox version: 0.1.dev1+gd64be531b
taskid:task_build_service:mopro - TaskError
PythonAction Error
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/site-packages/pyqcrbox/cli/helpers/docker_project.py", line 81, in run_docker_compose_command
    proc.check_returncode()
  File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/subprocess.py", line 502, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['/usr/bin/docker', 'compose', '--project-name=qcrbox', '--env-file=/home/runner/work/QCrBox/QCrBox/.env.dev', '--file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml', '--file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml', '--file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml', 'build', 'mopro']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/site-packages/doit/action.py", line 461, in execute
    returned_value = self.py_callable(*self.args, **kwargs)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/site-packages/pyqcrbox/cli/helpers/docker_project.py", line 42, in build_single_docker_image
    self.run_docker_compose_command("build", target_image, dry_run=dry_run, capture_output=True)
  File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/site-packages/pyqcrbox/cli/helpers/docker_project.py", line 84, in run_docker_compose_command
    raise QCrBoxSubprocessError(error_msg) from exc
pyqcrbox.cli.helpers.qcrbox_helpers.QCrBoxSubprocessError: An error occurred when executing the following command:

    /usr/bin/docker compose --project-name=qcrbox --env-file=/home/runner/work/QCrBox/QCrBox/.env.dev --file=/home/runner/work/QCrBox/QCrBox/docker-compose.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.build.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.build.yml --file=/home/runner/work/QCrBox/QCrBox/docker-compose.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/cod_check/docker-compose.cod_check.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crysalis-pro/docker-compose.crysalis-pro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/crystal_explorer/docker-compose.crystal-explorer.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_cli/docker-compose.dummy_cli.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/dummy_gui/docker-compose.dummy_gui.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/eval1x/docker-compose.eval1x.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/mopro/docker-compose.mopro.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/olex2_linux/docker-compose.olex2_linux.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrbox_quality/docker-compose.qcrbox_quality.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/qcrboxtools/docker-compose.qcrboxtools.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/shelx/docker-compose.shelx.run.yml --file=/home/runner/work/QCrBox/QCrBox/services/applications/xharpy_gpaw/docker-compose.xharpy-gpaw.run.yml build mopro

Return code: 1

Captured stdout: 

                #1 [internal] load local bake definitions
                #1 reading from stdin 1.39kB done
                #1 DONE 0.0s

                #2 [internal] load build definition from Dockerfile
                #2 transferring dockerfile: 1.60kB done
                #2 WARN: InvalidDefaultArgInFrom: Default value for ARG qcrbox/base-wine:${QCRBOX_DOCKER_TAG} results in empty or invalid base image name (line 2)
                #2 WARN: UndefinedVar: Usage of undefined variable '$QCRBOX_GROUP' (line 9)
                #2 WARN: UndefinedVar: Usage of undefined variable '$QCRBOX_GROUP' (line 43)
                #2 DONE 0.0s

                #3 [internal] load metadata for docker.io/qcrbox/base-wine:latest
                #3 DONE 0.0s

                #4 [internal] load .dockerignore
                #4 transferring context: 2B done
                #4 DONE 0.0s

                #5 [internal] load build context
                #5 transferring context: 26.69kB done
                #5 DONE 0.0s

                #6 [ 2/13] COPY --chown=qcrbox: MoProSuite_win_2024_10.zip /opt/wine_installations/wine_win64/drive_c/MoPro.zip
                #6 ERROR: failed to calculate checksum of ref 53d5b372-3a00-4865-8d81-0d2be474f41b::vffnb3ea233tqoocjdcznis9a: "/MoProSuite_win_2024_10.zip": not found

                #7 [1/9] FROM docker.io/qcrbox/base-wine:latest
                #7 DONE 0.1s
                ------
                 > [ 2/13] COPY --chown=qcrbox: MoProSuite_win_2024_10.zip /opt/wine_installations/wine_win64/drive_c/MoPro.zip:
                ------


Captured stderr: 

                Dockerfile:9

                --------------------

                   7 |     

                   8 |     

                   9 | >>> COPY --chown=${QCRBOX_USER}:${QCRBOX_GROUP} MoProSuite_win_2024_10.zip /opt/wine_installations/wine_win64/drive_c/MoPro.zip

                  10 |     

                  11 |     RUN cd /opt/wine_installations/wine_win64/drive_c/ && \

                --------------------

                failed to solve: failed to compute cache key: failed to calculate checksum of ref 53d5b372-3a00-4865-8d81-0d2be474f41b::vffnb3ea233tqoocjdcznis9a: "/MoProSuite_win_2024_10.zip": not found




2025-11-05 14:50:53.946 | ERROR    | pyqcrbox.cli.helpers.doit_helpers:run_tasks:47 - Execution of the command failed. See the logging output above for details.

Install QCrBox front-end#

In order to drive the QCrBox platform, ensure you also have deployed the QCrBox web front-end. Using the devbox shell navigate outside of the QCrBox folder. Then you can clone the necessary files using:

git clone https://github.com/QCrBox/QCrBoxFrontend.git

You can find instructions to deploy it here.

Prerequisites#

The following dependencies need to be installed manually.

Docker and Docker Compose

The easiest way to install Docker is to use the Docker Desktop (scroll down to find the box titled "Install Docker Desktop" and click on the link for your operating system).

If you don't care about a graphical user interface (for example, if you are working on a remote server), you can also manually install Docker Engine and Docker Compose.

Info

QCrBox has been tested with the version of Docker listed below, but other recent versions should also work. Please create an issue on GitHub if you experience any problems.

Note that QCrBox requires Docker Engine version 25.0 or later due to the use of --start-interval in container health checks.

$ docker version
Client:
 Version:           24.0.9
 API version:       1.43
 Go version:        go1.22.5
 Git commit:        v24.0.9
 Built:             Thu Jan  1 00:00:00 1970
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.1.1
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.12
  Git commit:       cc13f95
  Built:            Tue Jul 23 19:57:01 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.19
  GitCommit:        2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
 runc:
  Version:          1.7.19
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

$ docker compose version
Docker Compose version v2.21.0