def startup_command(self, ctx, **kwds): """Return a shell command used to startup this instance. Among other common planmo kwds, this should respect the ``daemon`` keyword. """ daemon = kwds.get("daemon", False) daemon_str = "" if not daemon else " -d" docker_run_extras = "-p %s:80%s" % (self.port, daemon_str) env_directives = ["%s='%s'" % item for item in self.env.items()] image = kwds.get("docker_galaxy_image", "bgruening/galaxy-stable") run_command = docker_util.build_docker_run_command( "", image, interactive=False, env_directives=env_directives, working_directory=None, name=self.server_name, run_extra_arguments=docker_run_extras, set_user=False, volumes=self.volumes, **self.docker_target_kwds ) chmod_command = [ "chmod", "-R", "o+rwx", self.config_directory, ] if self.export_directory: chmod_command.append(self.export_directory) return shell_join( argv_to_str(chmod_command), run_command, )
def cli(ctx, path, **kwds): """Launch shell in Docker container for a tool. Will launch a shell in the Docker container referenced by the specified tool. Prints a command to do this the way Galaxy would in job files it generates - so be sure to wrap this in $(...) to launch the subshell. \b $ $(planemo docker_shell bowtie2.xml) ... root@b8754062f875:/# """ tool_xml = load_tool(path) requirements, containers = parse_requirements_from_xml(tool_xml) identifier = None for container in containers: if container.type == "docker": identifier = container.identifier # Refactor mulled container resolver to be able to do this. if kwds["from_tag"]: identifier = "-t %s" % identifier tool_dir = os.path.dirname(os.path.abspath(path)) working_dir = os.path.abspath(os.getcwd()) if tool_dir.startswith(working_dir): volumes = ["%s:%s" % (working_dir, working_dir)] elif working_dir.startswith(tool_dir): volumes = ["%s:%s" % (tool_dir, tool_dir)] else: volumes = [ "%s:%s" % (working_dir, working_dir), "%s:%s" % (tool_dir, tool_dir) ] script = docker_util.build_docker_run_command( "/bin/bash", identifier, interactive=True, terminal=True, working_directory=working_dir, volumes=volumes, **dockerfiles.docker_host_args(**kwds)) print(script)