Общий том Jupyterhub/singleuser
Я пытаюсь настроить сервер Jupyterhub в Ubuntu 16.04, во многом по аналогии с https://github.com/minrk/jupyterhub-demo.
Я изменил jupyterhub_config.py для поддержки постоянного хранения, используя советы, приведенные здесь https://github.com/jupyterhub/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.
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