Подмена бинарника в докере
Anton Bessonov
exelib на gmail.com
Пн Апр 25 17:33:00 UTC 2016
Здравстуйте,
на сколько я помню, то энджин не посзоляет обновлять конфигурацию, если
менять параметры некоторых директив, таких как пути к кэшам. Актуально
использую подмену бинарника - вроде помогает.
Сейчас эксперементирую с тем же самым, только в контейнере. По умолчанию
энджин имеет 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 и всё такое, если
нужно срочно).
И ещё вопрос: А после -WINCH воркеры не должны вымирать?
С уважением,
Антон
--
Certified Prince2:2009 Project Manager
Professional Scrum Expert
Oracle Certified Expert, Enterprise JavaBeans Developer
Oracle Certified Professional, Java SE 6 Programmer
Now that's a test of the character of an organization.
Of the organizations that are attempting to implement
Scrum probably, 30% - 35% will successfully implement it.
- Ken Schwaber
Подробная информация о списке рассылки nginx-ru