Add rust toolchain in customized setup, e.g. for {polars}?

Hi there,

I just tested renkulab.io for a spectroscopy modeling workshop that I am going to give in autumn. Really like it so far, thanks for realizing this platform!

I am currently working on an R package that uses {polars}, interfacing the super-fast dataframe library in rust. This again needs the rust toolchain because only binaries seem to work out of the box. The need for polars is not absolute, but still it would kick-start things better on low RAM systems, particularly because one can use serialization on disk.

Now to the question.

  1. I started modifying the current Dockerfile, however this seems to have no effect when launching the session. Is this intended, or do I need to start from scratch with a custom template?
  2. If 1. does not work, are you considering to add the pola.rs framework, meaning a rust env in debian bullseye, which is nice for both Python (most mature) and R (rapidly growing, most features are supported)? Or is this too much of a burden because you want to have the images lightweight generally?

Looking forward to your answer. Thanks a lot and cheers,
Philipp

2 Likes

Hi Philipp,

modifying the Dockerfile should work (as long as it builds). The Dockerfile is built in the Gitlab CI, so you can check in Gitlab if the build pipeline works.

How are you starting the session? If instead of just clicking “Start” you click on the small arrow next to the start button and pick “Start with options”
image
does it say anything about the Dockerfile there? It should be a green “available”. And does it work if you start from that screen?

If the project is public, could you post a link to it so I could have a look?

Cheers,

Ralf

Hi Ralf,
Thanks so much for the fast reply :slight_smile: I tested with “Start with options” , but that makes totally sense it probably needs to finish the CI run. I also stopped the running container and restarted, which seemed to have no effect.

It is public, so far its very rusty and unversioned, I just added a

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

and some renv.lock initialization.

The repo/image is public:

Thanks in advance. Cheers, Philipp

I do not see the curl line in the Dockerfile or anywhere else in the project. Did you commit and push the Dockerfile? it only gets picked up if it’s committed and pushed.

Right now there’s only a single commit on the Dockerfile from project initialization.

Oh my fault, I forgot to commit and push. Just did that. Sorry for missing this!

No worries :slightly_smiling_face: Let me know if there’s still problems now that the image should get built

Oh and on a side note, you can also install the renku CLI locally on your machine using pip install renku, clone the project using renku clone <git url> and then use renku session start -p docker inside the repo to run the session locally. This helps with working on Dockerfiles as you get feedback faster.

epic, thanks that is fantastic. Btw had to add sh -s -- -y to the tail of the pipe. Now getting friendly “Rust is installed now. Great!” in pipeline here. Thanks for your help! Looking forward to use the platform further for teaching.

like local dev this way, it’s efficient.

Thank you @philipp-baumann for your feedback. Do not doubt to reach out to us if you need any support on using Renku for teaching or you have any further comments/issues/suggestions! We are more than happy to hear from you.

1 Like