thanks for your suggestions will check out these options. best, Aakash
On Fri, Feb 14, 2020 at 12:19 AM Jason Anderson <[email protected]> wrote: > 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]> > 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]. >> 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]. > 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 > <https://groups.google.com/d/msgid/jupyter/7f9a4185-093a-bf93-7562-a07944e20aff%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]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/CA%2BrXD%2BVqR5U2vn3ORqVfNgBsH3Uoe2MfW-KZ5AYyAR9draSrKw%40mail.gmail.com.
