Search code examples
dockernginxcloud

How to restart nginx service in Docker nginx image (`service nginx restart`) without container stopping?


I've been experimenting with nginx using Docker image nginx.

docker run -d --name nginx nginx
docker exec -ti nginx bash
# <edit /etc/nginx/conf.d files>

Now in order to load the edited /etc/nginx/conf.d files, I execute service nginx restart, which causes the container to stop, since the init process (nginx) terminated. Thus, I need to execute docker start nginx and docker exec -ti nginx bash to resume.

Is there any way to restart nginx to have it load the edited config files without also stopping the container?


Solution

  • Call NGINX again with the -s command line parameter.

    For example, /usr/bin/nginx -s stop will stop the NGINX server.

    the other signals using with -s command are:

    • stop
    • quit
    • reopen
    • reload

    The reload command keeps the Nginx server running as it reloads updated configuration files. If Nginx notices a syntax error in any of the configuration files, the reload is aborted and the server keeps running based on old config files. Reloading is safer than restarting Nginx.

    example: /usr/bin/nginx -s reload