Tim, that's cool, I didn't realize BinderHub supported authentication. Definitely a more production-grade setup.
On 2/13/20 10:06 AM, Tim Head wrote: If you are looking for a production grade setup that builds containers on demand and uses JupyterHub in the background give https://github.com/jupyterhub/binderhub a spin. T On Thu, Feb 13, 2020 at 4:46 PM Jason Anderson <[email protected]<mailto:[email protected]>> wrote: Hi Aakash, You could look at the named servers[1] feature for this. It allows you to allow users to spawn multiple Jupyter server containers assigned to them. A solution for your use case would probably require some additional functionality built in to JupyterHub. We have explored something similar in a three-part solution. Part 1: use the pre_spawn_hook[2] functionality of the spawner to adjust spawn configurations based on something on the request. In our case, we inspected the request query string for some special arguments. In your case, those arguments could contain the location of the Notebook and/or perhaps the package requirements definition. This information can be passed to the spawner as environment variables; other ways of passing the information may be possible. Part 2: extend a default JupyterLab docker container with a custom start script that checks those environment variables. Maybe it checks out the Notebook remotely and pip installs the required packages. I am not aware of a pre-built solution for this; repo2docker has the ability to do it but last time I looked, it's not possible to extract just the logic that scans for requirements.txt files and installs them; it can only output new Dockerfiles. Still a good place to steal from ;). Once the packages are installed, you call the original JupyterLab start script. Part 3 (optional): register a custom handler (via extra_handlers[3]) in JupyterHub if you want to make it easier to direct the user to your spawn URL. In Part 1, your spawn url would have to look something like /spawn/{user_name}/{server_name}?notebook_url={notebook}. The server_name would be auto-generated as each server must have a unique name. We used some hash of the input params. It's probably also to encode the input params (like your notebook name) directly as the server name. Hope this gives you some ideas, /Jason [1]: https://jupyterhub.readthedocs.io/en/stable/reference/rest.html#enabling-users-to-spawn-multiple-named-servers-via-the-api [2]: https://jupyterhub.readthedocs.io/en/stable/api/spawner.html#jupyterhub.spawner.Spawner.pre_spawn_hook [3]: https://jupyterhub.readthedocs.io/en/stable/api/app.html#jupyterhub.app.JupyterHub.extra_handlers On 2/13/20 7:28 AM, Aakash Sharma wrote: Hi I understand jupyterhub has a docker spawner that will give a container per user and isolate so users do not interfere their work. But if we wish to have a kaggle kernel like feature that for each notebook we spawn a container import required packages library build the environment and assign to user. Essentially multiple containers spawned with required dependencies and assigned to user. How it may be achieved. Thx, aakash -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/2f9c304a-2de3-33bd-4a00-5ddf1f836ac3%40uchicago.edu<https://groups.google.com/d/msgid/jupyter/2f9c304a-2de3-33bd-4a00-5ddf1f836ac3%40uchicago.edu?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/CAN3x1RZUD1vFcwgXBe_ysLOKGoNXLnN%3Dge8%2B47ycw4yVV6tJTg%40mail.gmail.com<https://groups.google.com/d/msgid/jupyter/CAN3x1RZUD1vFcwgXBe_ysLOKGoNXLnN%3Dge8%2B47ycw4yVV6tJTg%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/7f9a4185-093a-bf93-7562-a07944e20aff%40uchicago.edu.
