bioinformatics
cwl
CWLDay 7

CWL User Guide 7: Running Tools Inside Docker をやってみた

More than 1 year has passed since last update.

CWL User Guide 7: Running Tools Inside Docker

Common Workflow Language User Guide: Running Tools Inside Docker

今回は Docker を利用した例について書かれています
docker コンテナを使って javascript を実行します。

この回にでてくる主なキーワード

  • Docker
  • Dockerrequirements
  • hints

CWLファイル、docker.cwl

docker.cwl
#!/usr/bin/env cwl-runner

cwlVersion: v1.0
class: CommandLineTool
baseCommand: node
hints:
  DockerRequirement:
    dockerPull: node:slim
inputs:
  src:
    type: File
    inputBinding:
      position: 1
outputs: []

パラメータファイル docker-job.yml

docker-job.yml
src:
  class: File
  path: hello.js

必要なファイル

Javascriptのファイルを実行する必要があります

echo "console.log(\"Hello World\");" > hello.js

実行

実行方法

cwltool docker.cwl docker-job.yml

実行結果

$ cwltool docker.cwl docker-job.yml
/usr/local/bin/cwltool 1.0.20171107133715
Resolved 'docker.cwl' to 'file:///home/vagrant/cwl_user_guide_work/07-containers/docker.cwl'
['docker', 'pull', 'node:slim']
slim: Pulling from library/node
85b1f47fba49: Pull complete
ba6bd283713a: Pull complete
b9968e24de01: Pull complete
838ee1f471db: Pull complete
0aeceafac5a9: Pull complete
ac225a9df894: Pull complete
Digest: sha256:be3ec422193a582d802d2948149d502c421f34749fd4535295e6538e3cd39dc8
Status: Downloaded newer image for node:slim
[job docker.cwl] /tmp/tmp_zLyzf$ docker \
    run \
    -i \
    --volume=/tmp/tmp_zLyzf:/var/spool/cwl:rw \
    --volume=/tmp/tmpfQ5mMZ:/tmp:rw \
    --volume=/home/vagrant/cwl_user_guide_work/07-containers/hello.js:/var/lib/cwl/stg93732819-d8a8-449c-b8ea-1ca6f684464b/hello.js:ro \
    --workdir=/var/spool/cwl \
    --read-only=true \
    --user=1000:1000 \
    --rm \
    --env=TMPDIR=/tmp \
    --env=HOME=/var/spool/cwl \
    node:slim \
    node \
    /var/lib/cwl/stg93732819-d8a8-449c-b8ea-1ca6f684464b/hello.js
Hello World
[job docker.cwl] completed success
{}
Final process status is success

実行結果すこし細く

前半部分で、dockerが 'node:slim' とってきていることがわかります。
2度目に実行するときは、すでにコンテナが存在するので、この部分がなくなります。

実行結果確認

実行結果の最後から4行目で Hello World がじっこうされていることがわかります

Hello World

さらにちょっと

hello.js のメッセージを少し変更して、ふたたび実行してみましょう。
出力がかわることを確認できるとおもいます。

今回使ったファイル

cwl_user_guide_work/07-containers at master · manabuishii/cwl_user_guide_work