使用PM2运行一个完整的开发环境

我正在使用PM2来运行我的Node微服务,而且在开发中我也想启动MongoDB,这样我就可以用一个命令启动并运行开发。 我有一个像这样的开发ecos.js文件:

apps: [ { name: 'API', script: 'index.js', out_file: './logs/api.stdout.log', error_file: './logs/api.stderr.log' }, { name: 'Emailer', script: 'services/emailer/index.js', out_file: './logs/emailer.stdout.log', error_file: './logs/emailer.stderr.log' }, { name: 'MongoDB', script: 'services/development/mongodb.sh' } ] 

mongodb.sh看起来像这样:

 #!/bin/bash mongod 

当我启动PM2时,一切都运行良好。 当我打电话pm2 stop all ,它杀死节点进程,但不杀死MongoDB。

我猜这是因为它附加到bash实例,而不是mongod实例。 有没有办法使PM2启动并附加到可执行文件,而不是脚本文件?

如你所知;

PM2是具有内置负载均衡器的Node.js / io.js应用程序的生产过程pipe理器。 它使您可以永久保持应用程序的活动状态,无需停机即可重新加载应用程序,并且可以方便常见的系统pipe理任务

所以它没有承诺附加可执行文件或守护程序的实用程序。 但是在PM2上附加bash脚本文件是非常方便的事情。 在我看来,如果停止closuresbash进程,mongo守护进程仍然会在这种情况下生存下来。 所以你可以捕捉bash脚本退出的情况,而在停止pm2进程,陷入退出的情况下,你将能够调用mongod --shutdown命令。

或者另一个解决scheme创build一个startstop脚本,并运行和停止这些bash脚本,如mongodb守护进程的实用程序。

额外的解决scheme是Docker?