This repository provides github action workflows for automatic docker and singularity image creation. They are triggered by releasing a new SPM version.
The containers are hosted on the GitHub Container Registry
docker pull ghcr.io/spm/spm-docker:docker-matlab-latest
docker pull ghcr.io/spm/spm-docker:docker-octave-latestsingularity pull oras://ghcr.io/spm/spm-docker:singularity-matlab-latest
singularity pull oras://ghcr.io/spm/spm-docker:singularity-octave-latestFor example, to start SPM with its graphical user interface, use the following:
xhost +local:docker
docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp:/tmp -v /tmp/.X11-unix:/tmp/.X11-unix ghcr.io/spm/spm-docker:docker-matlab-latest fmriIf the container's root filesystem is mounted as read only
(--read-only flag), you need to bind mount an extra volume:
-v /tmp/.matlab:/root/.matlabThe containers run SPM Standalone headless, with no X server. The whole unit test suite can be run in one shot:
docker run --rm ghcr.io/spm/spm-docker:docker-matlab-latest testSome tests need the data from the private spm/spm-tests-data repository.
Without it they report as Incomplete, which is not a failure. To supply it,
bind mount a checkout over the tests/data directory inside the container
(NN is the SPM major version, e.g. 26):
docker run --rm \
-v /path/to/spm-tests-data:/opt/spm/spmNN_mcr/spmNN/tests/data \
ghcr.io/spm/spm-docker:docker-matlab-latest testspm_tests is built on matlab.unittest, which GNU Octave does not provide,
and it has no Octave code path. Separately, the bin/spm-octave launcher ends
with a waitfor loop over open figures, so a test that leaves a figure behind
would hang the container indefinitely. Running the suite under Octave needs both
of those addressed in the SPM repository first.
Docker is a container technology, performing operating-system-level virtualisation.
Singularity is another container technology that performs operating-system-level virtualization. One of the main uses of Singularity is to bring containers and reproducibility to scientific computing and HPC.
The official SPM Dockerfiles:
- Dockerfile using the SPM Standalone
- Dockerfile using GNU Octave
- Dockerfile.local wrapping a locally built standalone, used to test unreleased SPM
The singularity sif images are created from the docker images.
Check the SPM online documentation.
https://github.com/ReproNim/neurodocker
https://hub.docker.com/r/kaczmarj/neurodocker/
https://github.com/BIDS-Apps/SPM`](https://github.com/BIDS-Apps/SPM)
https://hub.docker.com/r/bids/spm/
https://github.com/mathworks-ref-arch/matlab-dockerfile
sudo singularity build spm12.sif spm12-octave.def
singularity exec spm12.sif
./spm12.sif --help(how to install singularity on Ubuntu)
Docker Hub (deprecated)
SPM Docker images used to be hosted on Docker Hub but this is now deprecated and the GitHub Packages Container Registry should be used instead.
docker pull spmcentral/spm:latest
docker pull spmcentral/spm:octave