flagflag  
10: 2021-07-12 (Mon) 10:15:51 iseki source 11: 2021-07-13 (Tue) 11:33:34 iseki source
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


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
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
Today

Who's Online

39 user(s) are online (6 user(s) are browsing xpwiki)

Members: 0
Guests: 39

more...

Access Counter

Today : 7005700570057005
Yesterday : 1361113611136111361113611
Total : 2364541223645412236454122364541223645412236454122364541223645412
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com