2017-07-08 76 views
1

我試圖建立一個Jupyterhub服務器上的Ubuntu 16.04,多沿https://github.com/minrk/jupyterhub-demo線。Jupyterhub /單用戶共享卷

我改變了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") 

任何想法?

P.S:這個問題在一定程度上關係到Shared, writable folders in jupyterhub

回答

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