使用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一个start
和stop
脚本,并运行和停止这些bash脚本,如mongodb守护进程的实用程序。
额外的解决scheme是Docker?