# Shared container specification for Bash, Python and Electron launchers. # Supported keys and development setup: docs/dev/ARCHITECTURE.md and CONTRIBUTING.md. services: tit: image: idossha/ti-toolbox:${TIT_IMAGE_TAG:-v3.0.2} platform: linux/amd64 # amd64-only image; Apple Silicon emulates it init: true # reap zombie processes under uvicorn's worker/reload subprocesses working_dir: /ti-toolbox volumes: - ${LOCAL_PROJECT_DIR}:/mnt/${PROJECT_DIR_NAME} - ${TIT_USER_CONFIG}:/root/.config/ti-toolbox # user-level config (telemetry, prefs) - /var/run/docker.sock:/var/run/docker.sock # DooD for QSIPrep/QSIRecon (DWI) - ${TIT_REPO_DIR:-}:/ti-toolbox # dev mount; omitted when empty environment: PROJECT_DIR_NAME: ${PROJECT_DIR_NAME} LOCAL_PROJECT_DIR: ${LOCAL_PROJECT_DIR} # host path for sibling QSIPrep/QSIRecon mounts TIT_SERVER_TOKEN: ${TIT_SERVER_TOKEN} TIT_SERVER_PORT: ${TIT_SERVER_PORT:-8765} TIT_STATIC_DIR: ${TIT_STATIC_DIR:-} # dev override; empty = the image's baked-in UI bundle PYTHONPATH: /ti-toolbox # only matters when the dev repo mount above is active TIT_REPO_DIR: ${TIT_REPO_DIR:-} TIT_SERVER_RELOAD: ${TIT_SERVER_RELOAD:-} TZ: ${TZ:-UTC} TIT_HOST_OS: ${TIT_HOST_OS:-unknown} TIT_HOST_OS_VERSION: ${TIT_HOST_OS_VERSION:-unknown} TIT_HOST_ARCH: ${TIT_HOST_ARCH:-unknown} ports: - "127.0.0.1:${TIT_SERVER_PORT:-8765}:${TIT_SERVER_PORT:-8765}" healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:${TIT_SERVER_PORT:-8765}/api/health"] interval: 10s timeout: 3s start_period: 20s retries: 6