dockerspawner.SystemUserSpawner†[edit]
- dockerspawner.DockerSpawner からの派生クラス
- DockerSpawner と同じパッケージ? 特にインストールしていないが,既に入っていた.(注:これは最新版ではなかった)
- jovyan ではなく,ログインユーザで使用可.ログインユーザのホームディレクトリをマウントする.
- グループに応じてマウントディレクトリを指定可能.
- グループ設定のUIが必要.
- ただしログインユーザの情報が,ローカルに取れない場合(LDAPのユーザバインドでログインした場合),ホームディレクトリ等の情報が無いので途中でエラーを起こす.
- 作りこめば大丈夫!
jovyan は潰せ! jovyan はテンプレートユーザだから潰しちゃダメ Dockerfile にしたからやっぱり潰す
この下以降の問題を全て解決した jupyterhub_config.py†[edit]
上記 GitHub の最新版(2021 07/11)を入れると,コンテナ内で NB_* の環境変数でグループIDを取れる!†[edit]
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-packages/dockerspawner/systemuserspawner.py を差し替える.
- HOME も取れる
iseki@299e2fa47bf9:~$ env |grep NB_
NB_UID=10015
NB_GID=10001
NB_USER=iseki
グループ名も取れるように改造†[edit]
129 def get_env(self):
130 env = super(SystemUserSpawner, self).get_env()
131 # relies on NB_USER and NB_UID handling in jupyter/docker-stacks
132 env.update(
133 dict(
134 USER=self.user.name, # deprecated
135 NB_USER=self.user.name,
136 USER_ID=self.user_id, # deprecated
137 NB_UID=self.user_id,
138 HOME=self.homedir,
139 )
140 )
141 if self.group_id >= 0:
142 env.update(NB_GID=self.group_id)
143 # Fumi.Iseki
144 import grp
145 gname = grp.getgrgid(self.group_id).gr_name
146 env.update(NB_GNM=gname)
147 return env
- notebook_dir = /home/teacher/{username}/work が効かない.teacher が無視される.