Problem adding/checking a docker tool

docker
job-config
tool-install
admin

#1

Hi,
I continue the thread I started https://biostar.usegalaxy.org/p/30080/
I did look at the huge configuration file pointed by @bjoern.gruening at https://github.com/galaxyproject/galaxy/blob/dev/config/job_conf.xml.sample_advanced#L376

For testing, I set up a simple busybox image and a tool. The code of the tool is below. To make the tool be executed in the docker container, I must define the default destination of jobs to “docker_local” in the file job_conf.xml. When letting the default to “local”, the tool is executed in the Galaxy shell not on the busybox one. Could somebody tell me what’s wrong, ie galaxy is not selecting the right runner on its own in my configuration?
Best.

“config/job_conf.xml” begins with

<?xml version="1.0"?>
<!-- A sample job config that explicitly configures job running the way
     it is configured by default (if there is no explicit config). -->
<job_conf>
    <plugins>
        <plugin id="local" type="runner" load="galaxy.jobs.runners.local:LocalJobRunner" workers="4"/>
    </plugins>
    <destinations default="local">
        <!-- Destinations define details about remote resources and how jobs
             should be executed on those remote resources. -->
        <destination id="local" runner="local"/>
        <destination id="docker_local" runner="local">
          <param id="docker_enabled">true</param>

tools/docker/dockrtest.xml

<tool id="dockr_test" name="dockr test" version="0.1.0">
  <requirements>
    <container type="docker">busybox</container>
  </requirements>
  <description>dcker test</description>
  <command>
<![CDATA[
echo "Hello!!!";
uname -a;
df -h > ${output};
if [ -d ${input} ]; then ls -l ${input}; fi;
]]>
  </command>
  <inputs>
    <param name="input" type="text" label="Directory" value="">
    </param>
  </inputs>
  <outputs>
    <data name="output" format="txt" />
  </outputs>
<help>
Description
-----------

This tool checks the docker execution.
</help>
</tool>

head config/tool_conf.xml

<?xml version='1.0' encoding='utf-8'?>
<toolbox monitor="true">
  <section id="test" name="Testing">
    <tool file="docker/dockrtest.xml" />
  </section>

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
...others not shown here...
busybox             latest              59788edf1f3e        2 months ago        1.15MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

#2

I read again the documentation mulled_containers.rst. I used the catDocker.xml tool (also at old repo with explanations) to do some more tests.

  • When the default destination is set to local, whatever the container value is, the script is executed without error.
  • When the default destination is set docker_local, if the container is not already installed, an error is raised.

Therefore I have the feeling that the resolver is not detecting the dependency to a specific docker image.I would appreciate some feedback.
Best.