Jupyterhub /单用户共享卷

时间:2017-07-08 12:01:28

标签: python docker ubuntu-16.04 jupyter jupyterhub

我试图在Ubuntu 16.04上设置一个Jupyterhub服务器,就像https://github.com/minrk/jupyterhub-demo一样。

我使用此处提供的提示https://github.com/jupyterhub/dockerspawner#data-persistence-and-dockerspawner更改了jupyterhub_config.py以支持持久存储:

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' 
}

但我不知道如何将另一个{name}映射传递给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")

有什么想法吗?

P.S。:这个问题与Shared, writable folders in jupyterhub

有些相关

1 个答案:

答案 0 :(得分:1)

@minrk的回复是你在GitHub发布后的几周内收到的。

  

对于未在默认配置对象中公开的更高级逻辑,您还可以在配置文件中继承DockerSpawner:

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