Так а если решение в лоб - запускать nginx не напрямую, а сделать на bash init скрипт и уже из него запускать nginx? Тогда никаких проблем с перезапуском nginx и умиранием докера.
25.04.2016, 22:55, "Anton Bessonov" <exe...@gmail.com>: > Так и есть, ppid становится 1: > > # ps axw -o pid,ppid,user,%cpu,vsz,wchan,command > PID PPID USER %CPU VSZ WCHAN COMMAND > 1 0 root 0.2 20044 pipe_w /bin/bash -c $(exec > /usr/sbin/nginx -g "daemon off;") > 5 1 root 0.0 31684 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 6 5 nginx 0.0 32068 - nginx: worker process > 7 0 root 0.6 20224 wait bash > 11 7 root 0.0 17500 - ps axw -o > pid,ppid,user,%cpu,vsz,wchan,command > > # kill -USR2 5 > # ps axw -o pid,ppid,user,%cpu,vsz,wchan,command > PID PPID USER %CPU VSZ WCHAN COMMAND > 1 0 root 0.0 20044 pipe_w /bin/bash -c $(exec > /usr/sbin/nginx -g "daemon off;") > 5 1 root 0.0 31684 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 6 5 nginx 0.0 32068 - nginx: worker process > 7 0 root 0.0 20224 wait bash > 12 5 root 0.0 31688 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 13 12 nginx 0.0 32068 - nginx: worker process > 14 7 root 0.0 17500 - ps axw -o > pid,ppid,user,%cpu,vsz,wchan,command > > # kill -WINCH 5 > # ps axw -o pid,ppid,user,%cpu,vsz,wchan,command > PID PPID USER %CPU VSZ WCHAN COMMAND > 1 0 root 0.0 20044 pipe_w /bin/bash -c $(exec > /usr/sbin/nginx -g "daemon off;") > 5 1 root 0.0 31684 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 6 5 nginx 0.0 32068 - nginx: worker process > 7 0 root 0.0 20224 wait bash > 12 5 root 0.0 31688 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 13 12 nginx 0.0 32068 - nginx: worker process > 15 7 root 0.0 17500 - ps axw -o > pid,ppid,user,%cpu,vsz,wchan,command > > # kill -QUIT 5 > # ps axw -o pid,ppid,user,%cpu,vsz,wchan,command > PID PPID USER %CPU VSZ WCHAN COMMAND > 1 0 root 0.0 20044 pipe_w /bin/bash -c $(exec > /usr/sbin/nginx -g "daemon off;") > 7 0 root 0.0 20224 wait bash > 12 1 root 0.0 31688 sigsus nginx: master process > /usr/sbin/nginx -g daemon off; > 13 12 nginx 0.0 32068 - nginx: worker process > 16 7 root 0.0 17500 - ps axw -o > pid,ppid,user,%cpu,vsz,wchan,command > > On 25.04.2016 21:08, Igor Sysoev wrote: > >> On 25 Apr 2016, at 20:33, Anton Bessonov <exe...@gmail.com> wrote: >> >>> Здравстуйте, >>> >>> на сколько я помню, то энджин не посзоляет обновлять конфигурацию, если >>> менять параметры некоторых директив, таких как пути к кэшам. Актуально >>> использую подмену бинарника - вроде помогает. >>> >>> Сейчас эксперементирую с тем же самым, только в контейнере. По умолчанию >>> энджин имеет PID 1, что убивает контейнер после kill -QUIT 1. >>> >>> В docker-compose делаю следующее: >>> >>> version: '2' >>> services: >>> nginxt: >>> image: nginx >>> ports: >>> - "6283:80" >>> command: /bin/bash -c '$$(exec /usr/sbin/nginx -g "daemon off;")' >>> >>> Вроде работает: >>> >>> # ps auxf >>> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND >>> root 7 0.1 0.3 20224 3208 ? Ss 17:07 0:00 bash >>> root 12 0.0 0.2 17496 2064 ? R+ 17:07 0:00 \_ ps auxf >>> root 1 0.0 0.2 20044 2704 ? Ss 17:06 0:00 /bin/bash -c $(exec >>> /usr/sbin/nginx -g "daemon off;") >>> root 5 0.0 0.4 31684 4860 ? S 17:06 0:00 nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 6 0.0 0.2 32068 2860 ? S 17:06 0:00 \_ nginx: worker process >>> >>> # kill -USR2 5 >>> # ps auxf >>> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND >>> root 7 0.0 0.3 20224 3208 ? Ss 17:07 0:00 bash >>> root 15 0.0 0.2 17496 2048 ? R+ 17:08 0:00 \_ ps auxf >>> root 1 0.0 0.2 20044 2704 ? Ss 17:06 0:00 /bin/bash -c $(exec >>> /usr/sbin/nginx -g "daemon off;") >>> root 5 0.0 0.4 31684 4860 ? S 17:06 0:00 nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 6 0.0 0.2 32068 2860 ? S 17:06 0:00 \_ nginx: worker process >>> root 13 0.0 0.4 31688 5080 ? S 17:08 0:00 \_ nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 14 0.0 0.2 32068 2880 ? S 17:08 0:00 \_ nginx: worker process >>> >>> # kill -WINCH 5 >>> # ps auxf >>> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND >>> root 7 0.0 0.3 20224 3208 ? Ss 17:07 0:00 bash >>> root 16 0.0 0.1 17496 1956 ? R+ 17:09 0:00 \_ ps auxf >>> root 1 0.0 0.2 20044 2704 ? Ss 17:06 0:00 /bin/bash -c $(exec >>> /usr/sbin/nginx -g "daemon off;") >>> root 5 0.0 0.4 31684 4860 ? S 17:06 0:00 nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 6 0.0 0.2 32068 2860 ? S 17:06 0:00 \_ nginx: worker process >>> root 13 0.0 0.4 31688 5080 ? S 17:08 0:00 \_ nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 14 0.0 0.2 32068 2880 ? S 17:08 0:00 \_ nginx: worker process >>> >>> # kill -QUIT 5 >>> # ps auxf >>> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND >>> root 7 0.0 0.3 20224 3208 ? Ss 17:07 0:00 bash >>> root 17 0.0 0.2 17496 2064 ? R+ 17:09 0:00 \_ ps auxf >>> root 1 0.0 0.2 20044 2704 ? Ss 17:06 0:00 /bin/bash -c $(exec >>> /usr/sbin/nginx -g "daemon off;") >>> root 13 0.0 0.4 31688 5080 ? S 17:08 0:00 nginx: master process >>> /usr/sbin/nginx -g daemon off; >>> nginx 14 0.0 0.2 32068 2880 ? S 17:08 0:00 \_ nginx: worker process >>> >>> Теперь вопросы. >>> >>> А оно работает? То есть какие проблемы могут возникнуть из-за такого >>> изврашённого способа? Или есть способ лучше? (Ну в голову пришло ещё просто >>> стартовать новый контейнер, подменивать днс и выкидывать старый... но я в >>> этом не сильно шарю - как там ttl и всё такое, если нужно срочно). >> А что показывает >> ps axw -o pid,ppid,user,%cpu,vsz,wchan,command >> >> В апгрэйде самое главное, чтобы ppid у мастер-процеса был 1. >> >>> И ещё вопрос: А после -WINCH воркеры не должны вымирать? >> Должны. Но при автоматическом апгрэйде достаточно USR2/QUIT. > > _______________________________________________ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru