33
44def make_template (
55 kernels : list [str ] = ["python" , "r" , "javascript" , "deno" , "bash" , "java" ],
6- set_user_workdir : bool = False ,
6+ is_docker : bool = False ,
77):
88 enabled_kernels = set (["python" , "javascript" ] + kernels )
99 # Start with base template
1010 template = (
1111 Template ()
1212 .from_image ("python:3.12" )
1313 .set_user ("root" )
14- .set_workdir ("/" )
14+ .set_workdir ("/root " )
1515 .set_envs (
1616 {
1717 "PIP_DEFAULT_TIMEOUT" : "100" ,
1818 "PIP_DISABLE_PIP_VERSION_CHECK" : "1" ,
1919 "PIP_NO_CACHE_DIR" : "1" ,
20- "JUPYTER_CONFIG_PATH" : ".jupyter" ,
21- "IPYTHON_CONFIG_PATH" : ".ipython" ,
22- "SERVER_PATH" : ".server" ,
20+ "JUPYTER_CONFIG_PATH" : "/root/ .jupyter" ,
21+ "IPYTHON_CONFIG_PATH" : "/root/ .ipython" ,
22+ "SERVER_PATH" : "/root/ .server" ,
2323 "JAVA_VERSION" : "11" ,
2424 "JAVA_HOME" : "/usr/lib/jvm/jdk-${JAVA_VERSION}" ,
2525 "IJAVA_VERSION" : "1.3.0" ,
@@ -117,9 +117,6 @@ def make_template(
117117 )
118118 )
119119
120- if set_user_workdir :
121- template = template .set_user ("user" ).set_workdir ("/home/user" )
122-
123120 # Copy configuration files
124121 template = (
125122 template .copy ("matplotlibrc" , ".config/matplotlib/.matplotlibrc" )
@@ -131,6 +128,18 @@ def make_template(
131128 .copy ("startup_scripts" , ".ipython/profile_default/startup" )
132129 )
133130
131+ if is_docker :
132+ # create user user and /home/user
133+ template = template .run_cmd ("useradd -m user" )
134+ template = template .run_cmd ("mkdir -p /home/user" )
135+ template = template .run_cmd ("chown -R user:user /home/user" )
136+ # add to sudoers
137+ template = template .run_cmd (
138+ "echo 'user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"
139+ )
140+
141+ template = template .set_user ("user" ).set_workdir ("/home/user" )
142+
134143 return template .set_start_cmd (
135- ".jupyter/start-up.sh" , wait_for_url ("http://localhost:49999/health" )
144+ "sudo /root/ .jupyter/start-up.sh" , wait_for_url ("http://localhost:49999/health" )
136145 )
0 commit comments