> CMD /my-cleaner.sh & \
> && /init
[...]
> Does the above look right?
Nope, that's not how CMD works. It
needs to be given a single command.
I don't know the specifics of /init,
because I'm using tini instead.
But the purpose is probably the same:
Have a minimal init process run
as pid 1 (process ID 1), so that
signal propagation to child processes
is handled correctly. Default signal
handling is different for pid 1
than for all other processes.[1]
The setup I use is:
- set ENTRYPOINT to tini, or some
other minimal init system
- use CMD for what I actually want
to run, usually a bash script
For example:
ENTRYPOINT ["/sbin/tini",
"-g", "--"]
CMD ["/path/to/my/bash/script.sh"]
The bash script starts with this
line:
#!/usr/bin/env bash
Alternatively, you could try
CMD ["/bin/bash", "/path/to/my/bash/script.sh"]
If I am mistaken and /init is not
a minimal init process to be used
as entry point, but some regular
command to be executed, try this:
CMD ["/bin/bash", "-c",
"/my-cleaner.sh & exec /init"]
That is a single command, namely
bash, which then interprets the
arguments as a command line and starts
child processes as required.
Hope that helps,
Roland
[1] https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/