When you launch an environment on renkulab (e.g. here: renkulab.io) from a project you have “maintainer” access to (e.g. it’s a project you have created, forked, or been granted access to as an individual or a group), you are redirected into an interactive environment (Jupyterlab or RStudio as specified by the configuration) where you can do work and save your changes by git push
ing.
This environment is controlled by the contents of the Dockerfile in your project. We provide one for you when you create a project on renkulab
or by command-line with renku init
with a minimal-ish set of (1) dependencies for launching environments on renkulab
, (2) renku
and renku
dependencies, like git
, git-lfs
, python
and/or R
, and (3) some useful command-line tools, like vim
.
Every time you push changes to your project, the GitLab CI/CD pipeline (using the hidden .gitlab-ci.yml
file) runs and builds an image for that commit from this Dockerfile – those images are stored, and we can use them to launch the interactive environments from renkulab
.
You can see specifically which software and which versions are installed by default by checking the first line in the Dockerfile
in your project; it should start with FROM
, e.g.
FROM renku/singleuser-r:0.4.3-renku0.8.2
This corresponds to a tag of an image stored on docker hub (https://hub.docker.com/r/renku/singleuser-r/tags), built from this repository, where you can read the contents of the Dockerfile
s in the /docker
directory at the also-tagged commit (https://github.com/SwissDataScienceCenter/renku-jupyter).
If you already have a Dockerfile in your project, you’ll want to add the extra dependencies to the commented sections provided in the default Dockerfile provided by renkulab
/renku
project creation/initialization. If the build fails, you’ll have to spend a little more time checking for compatibility – e.g. you might be able to put your own dependencies first, and add the renku dependencies using the renku-jupyter
project as a reference. Feel free to ask questions in this thread.
If you want to add extra software and it’s (python) pip
-installable, just add your software as a list into requirements.txt
, constraining the versions. You can then
pip install -r requirements.txt
in an active session, and then the next time you launch an interactive environment the container will have the dependencies automatically.