Software Environment#

It is possible to customize the software environment, to which users in their projects are exposed to, in various ways.

Within a Project#

Users are able to install their own software packages in their projects. It’s essentially a fully Linux environment without elevated privileges.

Read more:

Global Software#

See Projects Software about how to get read/write access to the global /ext mountpoint. This is quite powerful, because it allows you to install software packages globally, which are then available to all projects.

Note

Useful detail: if a file /ext/.bashrc exists, it is sourced by all projects via their local ~/.bashrc file. This means it is possible to extend the path, configure aliases, etc. right there. If some users want to opt out for a project, they just have to comment or delete this from the bottom of their local ~/.bashrc file.

Jupyter Kernels#

It is possible to globally deploy customized Jupyter Kernels. Each sub-directory of /ext/jupyter/kernels/ could hold your own kernels, where that /ext mountpoint is where the globally shared read-only filesystem is mounted in all projects (see Projects Software). This works, because by default $JUPYTER_PATH points to that jupyter directory. Globally installed kernels with the same directory name can be overwritten, because that path takes precedence – e.g. python3.

Ref: JUPYTER_PATH environment variable

Project Image#

The entire project image can be built from a Dockerfile by you. Look into the /project directory for more details. This is the most flexible way to customize the software environment.

The section here is work in progress…