-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Question: Nix for building docker images #122
Comments
Hi @dorranh thanks for bringing up this question! We have not considered |
Hi @rokroskar, apologies for the late response! Here's a link to a super minimal example on the nixpkgs repo. The thing with Nix is that since it is tracking the entire dependency graph for your application of interest (including transitive dependencies), adding new content to the docker container boils down to just adding it to the list of packages like in the above example (i.e. you just have to worry about packaging the component with Nix, then adding it to a Docker image is trivial). You can actually use other base images (e.g. one from DockerHub) with Nix, the only thing is that the contents coming from the external base image will not be reproducible (in the build sense, you can still use a tagged image). For Jupyter + Nix, we currently have a small project providing some common kernels, etc. https://github.com/tweag/jupyterWith. That repo also contains several examples. I can see two complicating factors with getting RenkuLab set up with Nix. One is that JupyterLab's extension infrastructure is a bit hard to manage under Nix, so I would imagine that we would need to explicitly package the core Jupyter extensions that ship with Renku (at least until JupyterLab 3.0 comes out, which will improve the situation). Two is that it looks like y'all are using the Julia kernel, which we haven't included with jupyterWith yet. That's definitely something we can (and should) do though. If you're still interested in exploring this option I'd be happy to mock up an example - just let me know! |
Hey @dorranh thanks a lot for your suggestions! it took me a while but I've finally come around to trying out nix with Renku. My current thinking is that it would be nice to provide nix "building blocks" so that renku components could be attached to any existing (potentially user-provided) image easily. That way we could use the whole jupyter stack of docker images, for example, with a simple I know this isn't optimal in terms of reproducibility - we may take a more nix-centric stance for non-interactive images (e.g. those used only in workflows and not in on-line jupyter sessions). Those will require far less ad-hoc configurations like jupyter configs and user settings/permissions etc. But I think already giving users the option of providing virtually any image they want and putting in the required renku pieces automatically would be a huge win. What do you think? |
I recently discovered the Renku project, and it looks super interesting! One question I had was if you all had looked into using nix for generating the renkulab Docker images for greater reproducibility of the renkulab environments (i.e. for stuff like host dependencies)?
The text was updated successfully, but these errors were encountered: