@@ -701,8 +701,9 @@ $graph:
701
701
extends : ProcessRequirement
702
702
doc : |
703
703
Indicates that a workflow component should be run in a
704
- [Docker](http://docker.com) container, and specifies how to fetch or build
705
- the image.
704
+ [Docker](http://docker.com) or Docker-compatible (such as
705
+ [Singularity](https://www.sylabs.io/) and [udocker](https://github.com/indigo-dc/udocker)) container environment and
706
+ specifies how to fetch or build the image.
706
707
707
708
If a CommandLineTool lists `DockerRequirement` under
708
709
`hints` (or `requirements`), it may (or must) be run in the specified Docker
@@ -727,6 +728,22 @@ $graph:
727
728
generated command line represents a valid command within the runtime
728
729
environment of the container.
729
730
731
+ A container image may specify an
732
+ [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint)
733
+ and/or
734
+ [CMD](https://docs.docker.com/engine/reference/builder/#cmd).
735
+ Command line arguments will be appended after all elements of
736
+ ENTRYPOINT, and will override all elements specified using CMD (in
737
+ other words, CMD is only used when the CommandLineTool definition
738
+ produces an empty command line).
739
+
740
+ Use of implicit ENTRYPOINT or CMD are discouraged due to reproducibility
741
+ concerns of the implicit hidden execution point (For further discussion, see
742
+ [https://doi.org/10.12688/f1000research.15140.1](https://doi.org/10.12688/f1000research.15140.1)). Portable
743
+ CommandLineTool wrappers in which use of a container is optional must not rely on ENTRYPOINT or CMD.
744
+ CommandLineTools which do rely on ENTRYPOINT or CMD must list `DockerRequirement` in the
745
+ `requirements` section.
746
+
730
747
## Interaction with other requirements
731
748
732
749
If [EnvVarRequirement](#EnvVarRequirement) is specified alongside a
0 commit comments