All Brainlife containers available are listed here: https://hub.docker.com/u/brainlife. It is possible to share the same Docker container across multiple Apps, but make sure to always specify the container version, so that you App won’t be affected when the container will be updated.
Example:
singularity exec docker://brainlife/mne:0.22.0 python3 maxfilter.py
As presented in the example above, we are currently developing Apps with MNE Python version 0.22.0
, so we need the Brainlife/mne Docker container pointing to that version to avoid any compatibility problem.
Meeting with Giulia Berto
Giulia has updated the Brainlife/mne Docker container to MNE version 0.22.0
because before the latest stable version of MNE available was 0.19.2
, which leads to some compatibility problems (arguments of some function are different from one version to another for instance).
She created a tutorial about Docker: https://github.com/giulia-berto/docker-tutorial (here only the part 6 interests us).
To update an existing container, you first have to update the Dockerfile.
For instance for the Brainlife/mne container (https://github.com/brainlife/docker-mne ):
Previous Dockerfile (with MNE version
0.19.2
)
FROM python:3.7.5 #RUN pip install --upgrade --no-deps git+https://github.com/mne-tools/mne-python.git RUN pip install mne matplotlib==0.19.2
Updated Dockerfile (with MNE version
0.22.0
)
FROM python:3.7.5 #RUN pip install --upgrade --no-deps git+https://github.com/mne-tools/mne-python.git #RUN pip install mne matplotlib==0.19.2 RUN pip install --upgrade pip RUN pip install mne==0.22.0 matplotlib
It’s good practice to update pip
too. It is possible to add other Python libraries (pandas
, scikit-learn
…), just add it after RUN pip install
.
Once your Dockerfile is updated, you have to build the Docker container image locally (with a new tag) and push it to Docker Hub (you need to have a Docker Hub account). For instance:
$ docker build --tag mne:0.22.0 . $ docker tag mne:0.22.0 <YourDockerHubID>/mne:0.22.0 $ docker push <YourDockerHubID>/mne:0.22.0
Brainlife has its own Docker Hub, but it is possible for us to create our own Docker containers, push it to our own Docker Hub, and make our App running on Brainlife on this Docker container. Nevertheless, if we used a Docker hosted in the Brainlife Docker Hub, it will be maintained in the long term by Brainlife.
Add Comment