Skip to main content

Docker installation

The Docker image contains CBIcall and all four supported workflow backends. The large reference and software bundle remains outside the image and is mounted only for bundled cbicall-core workflows.

1. Get the image

For reproducible analyses, use a released version rather than latest:

export CBICALL_IMAGE=manuelrueda/cbicall:1.2.0
docker pull "$CBICALL_IMAGE"
Build the checked-out source instead
git clone https://github.com/CNAG-Biomedical-Informatics/cbicall.git
cd cbicall
git checkout v1.2.0

docker buildx build --load \
-f docker/Dockerfile \
--build-arg CBICALL_VERSION="$(sed -n 's/^__version__ = "\(.*\)"/\1/p' src/cbicall/__about__.py)" \
--build-arg VCS_REF="$(git rev-parse HEAD)" \
-t cbicall:local .

The Docker build uses the current checkout as its build context; it does not clone a different revision. Inspect the recorded commit with:

docker inspect cbicall:local \
--format '{{ index .Config.Labels "org.opencontainers.image.revision" }}'

2. Choose the workflow source

Workflow sourceCBIcall bundle required?Notes
workflow_provider: cbicall-core (default)YesBundled native WES/WGS workflows support Bash, Snakemake, Nextflow, and Cromwell. mtDNA uses Bash and requires x86_64.
workflow_provider: nf-coreNoThe selected nf-core task runtime must be available from the container setup. Running CBIcall directly on the host is often simpler for Docker-based nf-core runs.

3. Install resources for cbicall-core

Keep the bundle in a persistent host directory:

export CBICALL_DATA=/absolute/path/to/cbicall-data
mkdir -p "$CBICALL_DATA"

docker run --rm \
--volume "$CBICALL_DATA":/cbicall-data \
"$CBICALL_IMAGE" \
cbicall install-resources --outdir /cbicall-data

Confirm that the image can see the installation:

docker run --rm \
--volume "$CBICALL_DATA":/cbicall-data \
--env CBICALL_DATA=/cbicall-data \
"$CBICALL_IMAGE" \
cbicall doctor

Skip this step when using only an external nf-core workflow.

Manual resource-download recovery

If the automatic Google Drive download fails, print the registered file list:

docker run --rm \
--volume "$CBICALL_DATA":/cbicall-data \
"$CBICALL_IMAGE" \
cbicall install-resources --outdir /cbicall-data --print-manual-download

Place every listed file in $CBICALL_DATA, then resume:

docker run --rm \
--volume "$CBICALL_DATA":/cbicall-data \
"$CBICALL_IMAGE" \
cbicall install-resources --outdir /cbicall-data --skip-download

Use --verify-resource-id-only to verify the small catalog-pinned identifier before downloading the archive. Add --remove-parts after successful verification when disk space is limited.

4. Run an analysis

Keep the parameters YAML and input data under one host project directory. Bind that directory at the same absolute path so paths in the YAML remain valid:

export PROJECT_DIR=/absolute/path/to/project

docker run --rm \
--user "$(id -u):$(id -g)" \
--env HOME=/tmp \
--env CBICALL_DATA=/cbicall-data \
--volume "$CBICALL_DATA":/cbicall-data \
--volume "$PROJECT_DIR":"$PROJECT_DIR" \
--workdir "$PROJECT_DIR" \
"$CBICALL_IMAGE" \
cbicall run -p "$PROJECT_DIR/parameters.yaml" -t 4

The run directory is written to the mounted project directory and remains on the host after the container exits.

5. Run an integration test

Use a new or empty host directory to retain the generated reports:

export TEST_DIR=/absolute/path/to/cbicall-wes-test
mkdir -p "$TEST_DIR"

docker run --rm \
--user "$(id -u):$(id -g)" \
--env HOME=/tmp \
--env CBICALL_DATA=/cbicall-data \
--volume "$CBICALL_DATA":/cbicall-data \
--volume "$TEST_DIR":/work \
"$CBICALL_IMAGE" \
cbicall test --wes-bash -t 1 --workspace /work

System requirements

  • Docker with Buildx support for local multi-platform builds.
  • A Linux amd64 or arm64 host; mtDNA workflows require amd64/x86_64.
  • Sufficient CPU, memory, and storage for the selected workflow. Allow at least 16 GB RAM and 100 GB disk for the bundle and shipped WES test.