From 52dfd589b986397852d6700a4ca8d8afa7235416 Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 10:34:36 -0500 Subject: [PATCH 1/9] Unify the docker command, command_inject, and command_wrapper --- .../ipython/config/ipython.ini.sample | 21 ++++-------- .../rstudio/config/rstudio.ini.sample | 33 ++++++++++++------- .../web/base/interactive_environments.py | 30 +++++++++-------- 3 files changed, 45 insertions(+), 39 deletions(-) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index c8624ca72ec..ec1413aa25e 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -1,5 +1,4 @@ [main] - # Following options are ignored if using the Galaxy dynamic proxy but # are useful if mapping a range of ports for environment consumption. #apache_urls = False @@ -7,26 +6,18 @@ #ssl = False [docker] - -# Command to execute docker. For example `sudo docker` or `docker-lxc`. -command = docker +# Command to launch docker container. For example `sudo docker` or `docker-lxc`. +# If you need to use a command like `sg` you can do that here, just be sure to +# wrap all of the docker portion in single quotes. E.g. `sg 'docker' 'docker {docker_args}'` +command = docker run --sig-proxy=true -e DEBUG=false {docker_args} # The docker image name that should be started. image = bgruening/docker-ipython-notebook:dev -# Additional arguments that are passed to the `docker run` command. -command_inject = --sig-proxy=true -e DEBUG=false - -# Command to wrap around the full docker command. -# For example, `sg 'docker' '{cmd}'` where {cmd} will be replaced by the full -# docker command. Make sure to surround the {cmd} with single quotes('). -# Default: empty -#command_wrapper = - # URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the # Docker host of the spawned container if that is also not set. -#galaxy_url = +#galaxy_url = # The Docker hostname. It can be useful to run the Docker daemon on a different # host than Galaxy. @@ -35,4 +26,4 @@ command_inject = --sig-proxy=true -e DEBUG=false # Try to set the tempdirectory to world execute - this can fix the issue # where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" -wx_tempdir = False \ No newline at end of file +wx_tempdir = False diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index ed0b64ff7ce..a66e8ebd720 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -1,19 +1,30 @@ [main] # This cannot be changed password_auth = True -# Other -apache_urls = False -ssl = False +# Following options are ignored if using the Galaxy dynamic proxy but +# are useful if mapping a range of ports for environment consumption. +#apache_urls = False +#ssl = False [docker] -command = docker +# Command to launch docker container. For example `sudo docker` or `docker-lxc`. +# If you need to use a command like `sg` you can do that here, just be sure to +# wrap all of the docker portion in single quotes. E.g. `sg 'docker' 'docker {docker_args}'` +command = docker run --sig-proxy=true -e DEBUG=false {docker_args} + +# The docker image name that should be started. image = erasche/docker-rstudio-notebook:dev -# Additional arguments that are passed to the `docker run` command. `-u` -# settings are completely ignored. -command_inject = --sig-proxy=true -e DEBUG=false - -# URL to access the Galaxy API with from the spawned Docker container, if empty +# URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the -# Docker host of the spawned container, if that is also not set. -#galaxy_url= +# Docker host of the spawned container if that is also not set. +#galaxy_url = + +# The Docker hostname. It can be useful to run the Docker daemon on a different +# host than Galaxy. +#docker_hostname = localhost + +# Try to set the tempdirectory to world execute - this can fix the issue +# where 'sudo docker' is not able to mount the folder otherwise. +# "finalize namespace chdir to /import permission denied" +wx_tempdir = False diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index 297ffef099b..315d9c8db27 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -65,7 +65,6 @@ class InteractiveEnviornmentRequest(object): # will need to be recorded here. The ConfigParser doesn't provide a # .get() that will ignore missing sections, so we must make use of # their defaults dictionary instead. - default_dict['command_inject'] = '--sig-proxy=true' default_dict['docker_hostname'] = 'localhost' default_dict['wx_tempdir'] = 'False' default_dict['command_wrapper'] = '' @@ -182,18 +181,23 @@ class InteractiveEnviornmentRequest(object): conf.update(env_override) env_str = ' '.join(['-e "%s=%s"' % (key.upper(), item) for key, item in conf.items()]) volume_str = ' '.join(['-v "%s"' % volume for volume in volumes]) - cmd = '%s run %s -d %s -p %s:%s -v "%s:/import/" %s %s' % \ - (self.attr.viz_config.get("docker", "command"), - env_str, - self.attr.viz_config.get("docker", "command_inject"), - self.attr.PORT, self.attr.docker_port, - temp_dir, - volume_str, - self.attr.viz_config.get("docker", "image")) - cmd_wrapper = self.attr.viz_config.get("docker", "command_wrapper") - if cmd_wrapper != '' and '{cmd}' in cmd_wrapper: - cmd = cmd_wrapper.format( cmd=cmd ) - return cmd + # This is the basic docker command such as "sudo -u docker docker {docker_args}" + # or just "docker {docker_args}" + command = self.attr.viz_config.get("docker", "command") + # Then we format in the entire docker command in place of + # {docker_args}, so as to let the admin not worry about which args are + # getting passed + command = command.format(docker_args='{environment} -d -p {port_ext}:{port_int} -v "{temp_dir}:/import/" {volume_str} {image}') + # Once that's available, we format again with all of our arguments + command = command.format( + environment=env_str, + port_ext=self.attr.PORT, + port_int=self.attr.docker_port, + temp_dir=temp_dir, + volume_str=volume_str, + image=self.attr.viz_config.get("docker", "image") + ) + return command def launch(self, raw_cmd=None, env_override={}, volumes=[]): if raw_cmd is None: From 56ac2c0f137523c320ca12c684579b75d4b76dfc Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 10:50:05 -0500 Subject: [PATCH 2/9] Revert command inject and document rationale --- .../ipython/config/ipython.ini.sample | 10 +++++++++- .../rstudio/config/rstudio.ini.sample | 10 +++++++++- lib/galaxy/web/base/interactive_environments.py | 4 +++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index ec1413aa25e..4eba7969d9d 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -9,11 +9,19 @@ # Command to launch docker container. For example `sudo docker` or `docker-lxc`. # If you need to use a command like `sg` you can do that here, just be sure to # wrap all of the docker portion in single quotes. E.g. `sg 'docker' 'docker {docker_args}'` -command = docker run --sig-proxy=true -e DEBUG=false {docker_args} +# +# It is recommended that you use command_inject if you need to inject +# additional parameters. This command string is re-used for a `docker inspect` +# command and will likely cause errors if it is extensively modified, past the +# usual group/sudo changes. +command = docker run {docker_args} # The docker image name that should be started. image = bgruening/docker-ipython-notebook:dev +# Additional arguments that are passed to the `docker run` command. +command_inject = --sig-proxy=true -e DEBUG=false + # URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the # Docker host of the spawned container if that is also not set. diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index a66e8ebd720..a9da467510a 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -10,11 +10,19 @@ password_auth = True # Command to launch docker container. For example `sudo docker` or `docker-lxc`. # If you need to use a command like `sg` you can do that here, just be sure to # wrap all of the docker portion in single quotes. E.g. `sg 'docker' 'docker {docker_args}'` -command = docker run --sig-proxy=true -e DEBUG=false {docker_args} +# +# It is recommended that you use command_inject if you need to inject +# additional parameters. This command string is re-used for a `docker inspect` +# command and will likely cause errors if it is extensively modified, past the +# usual group/sudo changes. +command = docker run {docker_args} # The docker image name that should be started. image = erasche/docker-rstudio-notebook:dev +# Additional arguments that are passed to the `docker run` command. +command_inject = --sig-proxy=true -e DEBUG=false + # URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the # Docker host of the spawned container if that is also not set. diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index 315d9c8db27..b2964e35fbb 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -65,6 +65,7 @@ class InteractiveEnviornmentRequest(object): # will need to be recorded here. The ConfigParser doesn't provide a # .get() that will ignore missing sections, so we must make use of # their defaults dictionary instead. + default_dict['command_inject'] = '--sig-proxy=true' default_dict['docker_hostname'] = 'localhost' default_dict['wx_tempdir'] = 'False' default_dict['command_wrapper'] = '' @@ -187,9 +188,10 @@ class InteractiveEnviornmentRequest(object): # Then we format in the entire docker command in place of # {docker_args}, so as to let the admin not worry about which args are # getting passed - command = command.format(docker_args='{environment} -d -p {port_ext}:{port_int} -v "{temp_dir}:/import/" {volume_str} {image}') + command = command.format(docker_args='{command_inject} {environment} -d -p {port_ext}:{port_int} -v "{temp_dir}:/import/" {volume_str} {image}') # Once that's available, we format again with all of our arguments command = command.format( + command_inject=self.attr.viz_config.get("docker", "command_inject"), environment=env_str, port_ext=self.attr.PORT, port_int=self.attr.docker_port, From 175f89bdc8df1550d34bc5084df45185ef633057 Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 11:27:52 -0500 Subject: [PATCH 3/9] Hardcode defaults, per @jmchilton's comments --- .../ipython/config/ipython.ini.sample | 6 +++--- .../rstudio/config/rstudio.ini.sample | 8 ++++---- lib/galaxy/web/base/interactive_environments.py | 10 ++++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index 4eba7969d9d..1db0a5bafe8 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -14,13 +14,13 @@ # additional parameters. This command string is re-used for a `docker inspect` # command and will likely cause errors if it is extensively modified, past the # usual group/sudo changes. -command = docker run {docker_args} +#command = docker run {docker_args} # The docker image name that should be started. image = bgruening/docker-ipython-notebook:dev # Additional arguments that are passed to the `docker run` command. -command_inject = --sig-proxy=true -e DEBUG=false +#command_inject = --sig-proxy=true -e DEBUG=false # URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the @@ -34,4 +34,4 @@ command_inject = --sig-proxy=true -e DEBUG=false # Try to set the tempdirectory to world execute - this can fix the issue # where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" -wx_tempdir = False +#wx_tempdir = False diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index a9da467510a..248ea2f1e51 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -1,5 +1,5 @@ [main] -# This cannot be changed +# This CANNOT be changed. Eventually will be deprecated password_auth = True # Following options are ignored if using the Galaxy dynamic proxy but # are useful if mapping a range of ports for environment consumption. @@ -15,13 +15,13 @@ password_auth = True # additional parameters. This command string is re-used for a `docker inspect` # command and will likely cause errors if it is extensively modified, past the # usual group/sudo changes. -command = docker run {docker_args} +#command = docker run {docker_args} # The docker image name that should be started. image = erasche/docker-rstudio-notebook:dev # Additional arguments that are passed to the `docker run` command. -command_inject = --sig-proxy=true -e DEBUG=false +#command_inject = --sig-proxy=true -e DEBUG=false # URL to access the Galaxy API with from the spawn Docker containter, if empty # this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the @@ -35,4 +35,4 @@ command_inject = --sig-proxy=true -e DEBUG=false # Try to set the tempdirectory to world execute - this can fix the issue # where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" -wx_tempdir = False +#wx_tempdir = False diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index b2964e35fbb..d42e1e0e0be 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -65,10 +65,12 @@ class InteractiveEnviornmentRequest(object): # will need to be recorded here. The ConfigParser doesn't provide a # .get() that will ignore missing sections, so we must make use of # their defaults dictionary instead. - default_dict['command_inject'] = '--sig-proxy=true' - default_dict['docker_hostname'] = 'localhost' - default_dict['wx_tempdir'] = 'False' - default_dict['command_wrapper'] = '' + default_dict = { + 'command': 'docker run {docker_args}', + 'command_inject': '--sig-proxy=true -e DEBUG=false', + 'docker_hostname': 'localhost', + 'wx_tempdir': 'False', + } viz_config = ConfigParser.SafeConfigParser(default_dict) conf_path = os.path.join( self.attr.our_config_dir, self.attr.viz_id + ".ini" ) if not os.path.exists( conf_path ): From 10af45012735603385ac076f7b517dfe70314484 Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 14:22:32 -0500 Subject: [PATCH 4/9] Move run into python from template --- .../interactive_environments/ipython/config/ipython.ini.sample | 2 +- .../interactive_environments/rstudio/config/rstudio.ini.sample | 2 +- lib/galaxy/web/base/interactive_environments.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index 1db0a5bafe8..3af2bd39e7c 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -14,7 +14,7 @@ # additional parameters. This command string is re-used for a `docker inspect` # command and will likely cause errors if it is extensively modified, past the # usual group/sudo changes. -#command = docker run {docker_args} +#command = docker {docker_args} # The docker image name that should be started. image = bgruening/docker-ipython-notebook:dev diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index 248ea2f1e51..f8ed8c8027f 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -15,7 +15,7 @@ password_auth = True # additional parameters. This command string is re-used for a `docker inspect` # command and will likely cause errors if it is extensively modified, past the # usual group/sudo changes. -#command = docker run {docker_args} +#command = docker {docker_args} # The docker image name that should be started. image = erasche/docker-rstudio-notebook:dev diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index d42e1e0e0be..a7719296d21 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -190,7 +190,7 @@ class InteractiveEnviornmentRequest(object): # Then we format in the entire docker command in place of # {docker_args}, so as to let the admin not worry about which args are # getting passed - command = command.format(docker_args='{command_inject} {environment} -d -p {port_ext}:{port_int} -v "{temp_dir}:/import/" {volume_str} {image}') + command = command.format(docker_args='run {command_inject} {environment} -d -p {port_ext}:{port_int} -v "{temp_dir}:/import/" {volume_str} {image}') # Once that's available, we format again with all of our arguments command = command.format( command_inject=self.attr.viz_config.get("docker", "command_inject"), From d7bff96778b11a3ed2838103aea6cceca43bdfb4 Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 15:02:40 -0500 Subject: [PATCH 5/9] Correct stupid mistake from lack of testing --- lib/galaxy/web/base/interactive_environments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index a7719296d21..a3614639f9f 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -66,7 +66,7 @@ class InteractiveEnviornmentRequest(object): # .get() that will ignore missing sections, so we must make use of # their defaults dictionary instead. default_dict = { - 'command': 'docker run {docker_args}', + 'command': 'docker {docker_args}', 'command_inject': '--sig-proxy=true -e DEBUG=false', 'docker_hostname': 'localhost', 'wx_tempdir': 'False', From 1ad3308b49a6f5a25ef357300b47791987acbb22 Mon Sep 17 00:00:00 2001 From: Eric Rasche Date: Wed, 23 Sep 2015 15:09:03 -0500 Subject: [PATCH 6/9] Remove small formatting issue --- .../interactive_environments/ipython/config/ipython.ini.sample | 2 +- .../interactive_environments/rstudio/config/rstudio.ini.sample | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index 3af2bd39e7c..fc29f539d85 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -32,6 +32,6 @@ image = bgruening/docker-ipython-notebook:dev #docker_hostname = localhost # Try to set the tempdirectory to world execute - this can fix the issue -# where 'sudo docker' is not able to mount the folder otherwise. +# where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" #wx_tempdir = False diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index f8ed8c8027f..3f86bca63ba 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -33,6 +33,6 @@ image = erasche/docker-rstudio-notebook:dev #docker_hostname = localhost # Try to set the tempdirectory to world execute - this can fix the issue -# where 'sudo docker' is not able to mount the folder otherwise. +# where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" #wx_tempdir = False From e8db8a1932ab058d83331b547d9ef6e6e49bb934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Wed, 23 Sep 2015 22:33:29 +0200 Subject: [PATCH 7/9] Add docker_galaxy_temp_dir This is useful for if the normal tmp dir is located on NFS. In this case it's useful to override the temporary directory with an sshfs mount for example. --- lib/galaxy/web/base/interactive_environments.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/web/base/interactive_environments.py b/lib/galaxy/web/base/interactive_environments.py index a3614639f9f..ce850f2d850 100644 --- a/lib/galaxy/web/base/interactive_environments.py +++ b/lib/galaxy/web/base/interactive_environments.py @@ -51,7 +51,9 @@ class InteractiveEnviornmentRequest(object): self.notebook_pw_salt = self.generate_password(length=12) self.notebook_pw = self.generate_password(length=24) - self.temp_dir = os.path.abspath( tempfile.mkdtemp() ) + ie_parent_temp_dir = self.attr.viz_config.get("docker", "docker_galaxy_temp_dir") or None + self.temp_dir = os.path.abspath( tempfile.mkdtemp( dir=ie_parent_temp_dir ) ) + if self.attr.viz_config.getboolean("docker", "wx_tempdir"): # Ensure permissions are set try: @@ -70,6 +72,7 @@ class InteractiveEnviornmentRequest(object): 'command_inject': '--sig-proxy=true -e DEBUG=false', 'docker_hostname': 'localhost', 'wx_tempdir': 'False', + 'docker_galaxy_temp_dir': None } viz_config = ConfigParser.SafeConfigParser(default_dict) conf_path = os.path.join( self.attr.our_config_dir, self.attr.viz_id + ".ini" ) From b1d642a6ecd324c6c519fb391f7747a05d709bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Wed, 23 Sep 2015 22:42:27 +0200 Subject: [PATCH 8/9] Update ipython.ini.sample --- .../ipython/config/ipython.ini.sample | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample index fc29f539d85..f2a73402e81 100644 --- a/config/plugins/interactive_environments/ipython/config/ipython.ini.sample +++ b/config/plugins/interactive_environments/ipython/config/ipython.ini.sample @@ -35,3 +35,10 @@ image = bgruening/docker-ipython-notebook:dev # where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" #wx_tempdir = False + +# Overwride the IE tempdirectory. This can be useful if you regular tempdir is +# located on an NFS share, which does not work well as Docker volume. In this case +# you can have a shared sshfs share which you can use as temporary directory to +# share data between the IE and Galaxy. +#docker_galaxy_temp_dir = None + From a7c1c53f5352323abdb422fc8a9557e16e3f7993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Wed, 23 Sep 2015 22:42:45 +0200 Subject: [PATCH 9/9] Update rstudio.ini.sample --- .../rstudio/config/rstudio.ini.sample | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample index 3f86bca63ba..d678c8752dc 100644 --- a/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample +++ b/config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample @@ -36,3 +36,9 @@ image = erasche/docker-rstudio-notebook:dev # where 'sudo docker' is not able to mount the folder otherwise. # "finalize namespace chdir to /import permission denied" #wx_tempdir = False + +# Overwride the IE tempdirectory. This can be useful if you regular tempdir is +# located on an NFS share, which does not work well as Docker volume. In this case +# you can have a shared sshfs share which you can use as temporary directory to +# share data between the IE and Galaxy. +#docker_galaxy_temp_dir = None