Docker#
You can use the provided Dockerfiles to set up a docker image and run the project within a container.
Prepare for using Docker#
Install docker (Docker Desktop)
Switch to Linux containers
Make shared drives on your host system accessible to mount local directories:
Docker –> Settings –> Shared Drives
Dockerfiles#
We provide dockerfiles for testing and deployment.
Run tests in a Python 3 environment based on conda or a PyPI environment on Debian Linux.
Run the project in a Python 3 conda environment with Jupyter lab for interactive work (Debian Linux).
Build a docker image#
Download the source code in a project directory. Make sure the .dockerignore file is present.
Enter the project directory and run the following command to build the docker image from one of the Dockerfiles:
docker build -t <ImageName> -f <docker/choose directory/Dockerfile> .
Start a container from the image#
Run project tests:#
Run a container to just run the project tests and close afterwards:
docker run --rm <ImageName>
Run project in an interactive environment:#
Open a bash shell for interactive work within a container:
docker run -it <ImageName> bash
Open the shell with a host directory mounted as volume:
docker run -it -v <host directory>:/home/asterix/shared <ImageName> bash
To make sure a gui output (e.g. from napari) is directed to an X server (that must be installed on your host) add the DISPLAY environment variable:
docker run -it -v <host directory>:/home/asterix/shared -e DISPLAY=<IP-address>:0.0 <ImageName> bash
Use Jupyter notebooks:#
Start a container providing browser access to jupyter lab with a host directory mounted as volume:
docker run -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes -v <host directory>:/home/asterix/shared <ImageName>
For gui (e.g. napari) interaction add the DISPLAY environment variable.
Clean up#
After closing a jupyter lab you might have to delete the container before running the image again (e.g. if the option –rm was omitted):
docker rm -f <container>
or close all containers:
docker rm -f $(docker ps -q)
To clean up your system:
docker system prune