如何在 Jupyterhub/Jupyterlab 中初始化笔记本/工作目录的内容?

How to init content of notebooks / working directory in Jupyterhub/Jupyterlab?

如果我在 JupyterHub 中创建一个新用户,我希望使用一些入门示例初始化相应 JupyterLab 实例的工作目录:

我已经为 Jupyterlab 安装了 git 扩展。有没有办法为新用户自动克隆 git 存储库?

这是刷怪笼的文档: https://jupyterhub.readthedocs.io/en/stable/reference/spawners.html

我可以找到有关工作区初始化的提示。

Spawner在配置文件中提供了一些钩子函数jupyterhub_config.py。并且可以从挂钩函数中获取当前用户名。

import subprocess

def git(*args):
    return subprocess.check_call(['git'] + list(args))
    
def init_working_directory(spawner):
    username = spawner.user.name
    git_source = 'https://$user:$password@gitlab.server.de/my/project'
    target_folder = '/home/' + username + '/GettingStarted'
    git('clone', git_source, target_folder)
    
c.Spawner.pre_spawn_hook = init_working_directory

还有几个问题:

a) git 克隆命令仅在第一次使用时起作用,当文件夹 /home/username/GettingStarted 尚不存在。

b) 延迟日志期间没有显示进度条,git克隆命令需要一段时间。

c) Git 密码可能显示错误 messages/console。

因此,我将首先在创建 Docker 容器时执行 git 克隆,如果 GettingStarted 文件夹尚不存在,则仅在 pre_spawn_hook 中执行本地副本。