How to use a container with an entrypoint
Dockerfiles may contain
ENTRYPOINT directives that make the image run a command by default. These types of containers don't fit into the default bulker templates, which issue the command name as the default command. We can still get around it, but we have to do one additional thing in the bulker manifest: blank out the docker command to override the bulker default. To do this is as easy as adding a
docker_command attribute with a blank space as its value under the image entry in the manifest, like this example:
- command: pdftk docker_image: mnuessler/pdftk docker_args: -v $(pwd):/work docker_command: " "
Here, the pdftk image specifies an entrypoint, so we have to specify that
docker_command: ' ' to blank out the bulker template. Otherwise, bulker will say something like
docker run mnuessler/pdftk pdftk, and the
pdftk argument will not be treated as a command, but as an argument to be passed to the image-specified entrypoint command.
What if you need to pass an entrypoint to the container? In this case, the container wants to be run with
--entrypoint instead of calling the command directly. So, we blank out the
docker_command, and add the
--entrypoint argument to
- command: xq docker_command: " " singularity_command: "xq" docker_image: linuxserver/yq docker_args: "-i --entrypoint xq"
We have to add in the new
singularity_command to ensure that this manifest will also work with singularity, which doesn't follow the entrypoint framework used by docker.