bashdockershelldockerfiledocker-cmd

Commands to execute background process in Docker CMD


I am creating a docker image using a Dockerfile. I would like to execute some scripts while starting the docker container. Currently I have a shell script to execute all the necessary processes

CMD ["sh","start.sh"]

I would like to execute a shell command with a process running in background example

CMD ["sh", "-c", "mongod --dbpath /test &"]


Solution

  • Besides the comments on your question that already pointed out a few things about Docker best practices you could anyway start a background process from within your start.sh script and keep that start.sh script itself in foreground using the nohup command and the ampersand (&). I did not try it with mongod but something like the following in your start.sh script could work:

    #!/bin/sh
    ...
    nohup sh -c mongod --dbpath /test &
    ...