Jupyterhub /单用户共享卷

我试图在Ubuntu 16.04上安装一个Jupyterhub服务器,很像https://github.com/minrk/jupyterhub-demo 。

我改变了jupyterhub_config.py支持持久存储使用这里提供的技巧https://github.com/jupyterhub/dockerspawner#data-persistence-and-dockerspawner :

notebook_dir = os.environ.get('DOCKER_NOTEBOOK_DIR') or '/home/jovyan/work' c.DockerSpawner.notebook_dir = notebook_dir c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir } 

不过,我想为用户组添加一个共享的“团队”数量。 我有一个用户名(键)和队名(值)的字典映射用户到团队。

理想情况下,我会陈述如下:

 c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir, 'jupyterhub-team-{teamname}': os.path.join(notebook_dir, 'shared' } 

但我不知道如何将另一个{名字}映射传递给dockerspawner。

我试着摆弄这些东西,但目前还没有结果:

 c.DockerSpawner. ... extra_create_kwargs = Dict(config=True, help="Additional args to pass for container create") extra_start_kwargs = Dict(config=True, help="Additional args to pass for container start") extra_host_config = Dict(config=True, help="Additional args to create_host_config for container create") 

有任何想法吗?

PS:这个问题与jupyterhub中的共享,可写文件夹有些相关

从@minrk回复你在GitHub上收到几个星期后在这里发布。

对于未在默认configuration对象中公开的更高级逻辑,您还可以在configuration文件中inheritanceDockerSpawner的子类:

 from dockerspawner import DockerSpawner class MyDockerSpawner(DockerSpawner): def start(self): # username is self.user.name team = 'myteam' # add team volume to volumes self.volumes['jupyterhub-team-{}'.format(team) = '/home/shared' return super().start() c.JupyterHub.spawner_class = MyDockerSpawner