MONGO_URL与捆绑的“meteor运行 – 生产”

也许我的问题是这个重复,但我觉得它增加了一些细节,使其有所不同。

我目前有一个meteor泊坞窗设置,基于节点:0.10图像,首先捆绑应用程序,并运行“节点main.js”作为其CMD。 该映像还安装了Meteor,并使用其命令来引导环境并安装必要的软件包。

对我来说,如果不使用node:0.10,我可以使用更小的Linux映像,并简单地安装curl / git / meteor,从而大大简化映像。 删除构build步骤将进一步简化的事情,因为基于我的理解“meteorbuild设”没有手段不build立移动应用程序,如果他们configuration,但不需要(即如果我通常build立Android / IOS应用程序,我不能build立他们,如果我只是想要一个捆绑)。 另外,我的开发环境已经使用了MONGO_URL和一个容器化的MongoDB实例,所以在开发时我甚至没有使用本地数据库。

那么,“meteor run –production”与一组MONGO_URL和“node main.js”有什么区别呢? 在另一个情况下会发生什么?

特别是,“meteor跑 – 生产”是否检测到MONGO_URL的存在,而不是启动一个单独的,未使用的mongod? 我清楚地看到MONGO_URL所指向的数据库中的数据,但是我不确定meteor命令是否独立运行并浪费CPU周期/ RAM。 基于前面的问题,我收集它仍然轮询文件系统的变化。 但是这只是在Linux下使用inotify,我认为这是一个相当小的性能打击是正确的?

我想,如果我需要从我的服务器中获得每盎司的性能,那么捆绑就是要走的路。 但是如果使用MONGO_URL设置运行“meteor运行 – 生产”,则只会产生较小的性能下降,同时极大地简化了我的设置,所以简化我的Docker文件并统一我的开发/生产设置可能是值得的。

谢谢。

需要注意的是, meteor run --production …意味着“在模拟生产的开发环境中运行”,而不是“这是如何运行你的应用程序的生产”。

所以当你运行上面的命令时,process.env.NODE_ENV被设置为development

https://github.com/meteor/meteor/issues/180#issuecomment-30043150

任何meteor命令都会使用MONGO_URL指定的数据库,而且仅使用该数据库。 运行meteor test-packages时,我经常将MONGO_URL指向一个空string,以避免在程序包没有执行与数据库相关的任何操作时MONGO_URL一个Mongo实例的开销。 为了让您放心,您可以通过在另一个terminal上运行htop来查看是否创build了mongo进程。

关于meteor run --production监测文件系统的变化,是的,这是一个小的CPU开销。 再htop可以帮助。

“meteorbuild造”没有办法不build立移动应用程序,如果他们被configuration,但不需要(即如果我通常build立Android / IOS应用程序,我不能轻易不build立他们,如果我只是想要一个包)

在预先构build的步骤中,如果您不需要移动平台,则可以轻松地将.meteor /平台replace为server\nbrowser (删除androidios行)。

绑定然后运行node main.js是可以使用pm2( 永远是更好的select )来保持应用程序运行而不是崩溃。 但是,也请参阅“ meteor” 。