Обычно нет смысла использовать pm2 внутри докера.
Как PM2, так и Docker являются менеджерами процессов, и они оба могут выполнять пересылку журналов, перезапускать сбойные рабочие и многое другое. Если вы запустите pm2 внутри докера, вы сможете скрыть возможные проблемы с вашим сервисом, по крайней мере, следующие:
1) Если вы запустите один процесс на контейнер с pm2, вы не получите много, кроме увеличения потребления памяти. Перезапуск может быть выполнен с помощью чистого докера с политикой перезапуска . Другие докерские среды (например, ECS или Kubernetes) также могут это делать.
2) Если вы запустите несколько процессов, вы усложните мониторинг. Показатели ЦП и памяти больше не доступны напрямую для вашей окружающей среды.
3) Запросы на проверку работоспособности для одного процесса PM2 будут распределены по работникам, которые могут скрывать нездоровые цели
4) Сбои рабочих скрыты pm2, вы вряд ли когда-либо узнаете о них из вашей системы мониторинга (например, CloudWatch)
5) Балансировка нагрузки становится более сложной, поскольку у вас фактически будет несколько уровней балансировки нагрузки.
Кроме того, запуск нескольких процессов внутри контейнера Docker противоречит философии Docker, предусматривающей сохранение одного процесса на контейнер.
Один сценарий, о котором я могу подумать, - это если у вас очень ограниченный контроль над вашей средой докера. В этом случае запуск pm2 может быть единственным вариантом, позволяющим контролировать планирование рабочих процессов.