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