flagflag  If you want to see English page, please click "English" Button at Left.
10: 2021-07-12 (月) 10:15:51 iseki ソース 11: 2021-07-13 (火) 11:33:34 iseki ソース
Line 64: Line 64:
  9 cp /etc/subuid- /etc/subuid   9 cp /etc/subuid- /etc/subuid
-**** [[start.sh>./start.sh]] [#q31443f9]+**** [[start.sh(改)>./start.sh]] [#q31443f9]
- コンテナ内の /usr/local/bin/start.sh - コンテナ内の /usr/local/bin/start.sh
-- コンテナ内の環境設定スクリプト -- コンテナ内の環境設定スクリプト
Line 87: Line 87:
     .......      .......
     return super(NSLDockerSpawner, self).start()      return super(NSLDockerSpawner, self).start()
 +#br
 +
 +**** ProjectDockerSpawner [#d9dde499]
 +- 参考:  https://gist.github.com/marufeuille/596c​f6f9e26fa6fcb7e304d5b163c7c8
 +
 +   476  # refer: https://gist.github.com/marufeuille/596c​f6f9e26fa6fcb7e304d5b163c7c8
 +   477  from dockerspawner import SystemUserSpawner
 +   478  from traitlets import Unicode
 +   479  import pwd, os, grp
 +   480
 +   481  class ProjectDockerSpawner(SystemUserSpawner):​
 +   482
 +   483      dobleArguments = False
 +   484      #dobleArguments = True
 +   485
 +   486
 +   487      host_homedir_format_string = Unicode(
 +   488          "/home/{groupname}/{username}",
 +   489          config = True,
 +   490      )
 +   491
 +   492      image_homedir_format_string = Unicode(
 +   493          "/home/{groupname}/{username}",
 +   494          config = True,
 +   495      )
 +   496
 +   497
 +   498      @property
 +   499      def host_homedir(self):
 +   500          if (
 +   501              self.host_homedir_format_string is not None
 +   502              and self.host_homedir_format_string != ""
 +   503          ):
 +   504              homedir = self.host_homedir_format_string.format(u​sername=self.user.name, groupname=self.get_groupname())
 +   505          else:
 +   506              import pwd
 +   507
 +   508              homedir = pwd.getpwnam(self.user.name).pw_dir
 +   509          return homedir
 +   510
 +   511
 +   512      @property
 +   513      def homedir(self):
 +   514          return self.image_homedir_format_string.format(​username=self.user.name, groupname=self.get_groupname())
 +   515
 +   516
 +   517      def get_args(self):
 +   518          args = super(ProjectDockerSpawner, self).get_args()
 +   519          if (not self._user_set_cmd) and self.dobleArguments:
 +   520              args = []
 +   521          return args
 +   522
 +   523
 +   524      #def get_command(self):
 +   525      #    cmd = super(ProjectDockerSpawner, self).get_command()
 +   526      #    return cmd
 +   527      #
 +   528      #    '''
 +   529      #    if self._user_set_cmd:
 +   530      #        cmd = self.cmd
 +   531      #    else:
 +   532      #        image_info = yield self.docker("inspect_image", self.image)
 +   533      #        cmd = image_info["Config"]["Cmd"]
 +   534      #    return cmd + self.get_args()
 +   535      #    '''
 +   536
 +   537
 +   538      def template_namespace(self):
 +   539          d = super(ProjectDockerSpawner, self).template_namespace()
 +   540          if self.group_id >= 0:
 +   541              d['groupname'] = self.get_groupname()
 +   542          return d
 +   543
 +   544
 +   545      def get_groupname(self):
 +   546          gname = ''
 +   547          if self.group_id >= 0:
 +   548              gname = grp.getgrgid(self.group_id).gr_name
 +   549          return gname
 +   550
 +   551
 +   552      def get_env(self):
 +   553          env = super(ProjectDockerSpawner, self).get_env()
 +   554          if self.group_id >= 0:
 +   555              #env.update(NB_GID=self.group_id)
 +   556              import grp
 +   557              gname = self.get_groupname()
 +   558              env.update(NB_GROUP=gname)
 +   559          return env
 +   560
 +   561
 +   562      def start(self):
 +   563          name = self.user.name
 +   564          user_data = pwd.getpwnam(name)
 +   565          user_gid = user_data.pw_gid
 +   566          gid_list = os.getgrouplist(name, user_gid)
 +   567
 +   568          work_dir = self.notebook_dir
 +   569          self.volumes['jupyterhub-user-{username}​'] = work_dir
 +   570
 +   571          for gid in gid_list:
 +   572              gname = grp.getgrgid(gid).gr_name
 +   573              if gname.startswith("project-"):
 +   574                  dirname = gname.replace("project-", "")
 +   575                  self.volumes[gname] = work_dir + '/projects/' + dirname
 +   576
 +   577          return super(ProjectDockerSpawner, self).start()
 +
 +#br
 +
 +**** NSLDockerSpaewner [#rdae5a79]
 +#br
*** Trouble Shooting [#j137c8ff] *** Trouble Shooting [#j137c8ff]
Line 135: Line 247:
**** start.sh [#lb268269] **** start.sh [#lb268269]
-- [[start.sh>./start.sh]]+- [[start.sh(改)>./start.sh]]
#br #br


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

87 人のユーザが現在オンラインです。 (21 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 87

もっと...

アクセスカウンタ

今日 : 6889688968896889
昨日 : 1412914129141291412914129
総計 : 2345249923452499234524992345249923452499234524992345249923452499
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com