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

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

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

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

33
задан 09 марта '15 в 16:00
источник поделиться
2 ответов

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

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

39
ответ дан 09 марта '15 в 17:59
источник

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

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

14
ответ дан 27 нояб. '15 в 9:21
источник

Другие вопросы по меткам или Задайте вопрос