linuxnginxdocker

How to run Nginx within a Docker container without halting?


I have Nginx installed on a Docker container, and am trying to run it like this:

docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx

The problem is that the way Nginx works, is that the initial process immediately spawns a master Nginx process and some workers, and then quits. Since Docker is only watching the PID of the original command, the container then halts.

How do I prevent the container from halting? I need to be able to tell it to bind to the first child process, or stop Nginx's initial process from exiting.


Solution

  • nginx, like all well-behaved programs, can be configured not to self-daemonize.

    Use the daemon off configuration directive described in http://nginx.org/en/docs/ngx_core_module.html#daemon.