Подтвердить что ты не робот

Должен ли я использовать forever/pm2 внутри контейнера (Docker)?

Я реорганизую пару сервисов node.js. Все они использовали для запуска с forever на виртуальных серверах, если процесс разбился, они просто перезапускаются.

Теперь, перейдя к контейнерам и структурам без учета состояния, я думаю, что процесс должен выйти, и контейнер должен быть перезапущен при ошибке.

Это правильно? Есть ли преимущества или недостатки?

4b9b3361

Ответ 1

Мой прием не использует диспетчер процессов внутри контейнера (навсегда, pm2) и вместо этого использует политику перезагрузки докеров через --restart=always (или один из других вариантов этой опции). Это более подробно с общей философией докеров и должно работать очень точно так же, как в процессе контроля над контейнером, поскольку контейнеры докеров начинают работать очень быстро.

Самый сильный сторонник запуска надзора за процессом в контейнере, который я видел, находится в phusion baseimage-docker README, если вы хотите изучить другую позицию по этой теме.

Ответ 2

В то время как хорошая идея использовать --restart=always как отказоустойчивую, перезагрузка контейнера относительно медленная (5 + секунд с простым сервером Hello World Node, описанным здесь), поэтому вы можете минимизировать время простоя приложения, используя что-то вроде forever.

Недопустимость перезапуска процесса в контейнере заключается в том, что восстановление после сбоя теперь может произойти двумя способами, которые могут иметь последствия для вашего мониторинга и т.д.