2015-01-31 59 views
5

也许我的问题是this的重复,但我觉得它增加了一些细节,使它有所不同。“流星跑 - 生产”与MONGO_URL与捆绑

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

对我来说,如果不使用节点:0.10,我可以使用更小的Linux映像,并简单地安装curl/git/meteor,从而大大简化映像。因为根据我的理解,“流星建造”无法构建移动应用程序(如果它们已配置但不需要)(即,如果我通常构建Android/IOS应用程序,则无法轻松实现不是建立它们,如果我只想要一个包)。此外,我的开发环境已经使用了MONGO_URL和一个容器化的MongoDB实例,所以我在开发时甚至没有使用本地数据库。

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

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

我想象一下,如果我需要从我的服务器中获得每盎司的性能,那么捆绑就是要走的路。但是,如果运行的“流星跑 - 生产”与MONGO_URL只设置招致轻微的性能损失,同时极大地简化了我的设置,这是它可能值得我简化我的Dockerfiles和一点更加紧密地统一起来我的dev /产品设置。

谢谢。

回答

5

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

因此,当您运行上述命令时,process.env.NODE_ENV设置为development

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

1

任何meteor命令确实使用由MONGO_URL指定的数据库以及该数据库。运行meteor test-packages时避免旋转了蒙戈例如,如果包没有做任何与数据库相关的开销,我照例点MONGO_URL一个空字符串。为了安心,你可以仔细检查,通过在另一端运行htop,看到不创建蒙戈过程。

关于meteor run --production监视文件系统更改,是的,这是一个小的CPU开销。 htop可以提供帮助。

“流星打造”没有办法,如果他们配置,但并不需要不能建立移动应用(即,如果我通常构建Android/IOS应用程序,我不能轻易不建立他们,如果我只是想束)

在预生成步骤中,您可以轻松地更换.meteor /平台,该说server\nbrowser(去掉androidios线),如果你不需要移动平台。

绑定然后运行node main.js的好处是您可以使用pm2(a better alternative to forever)来保持您的应用程序运行而不是崩溃。然而,另见Meteor Up

+0

那么该如何“部署”用'node.main.js'通过hotcode推一个新的版本? – Adaptabi 2015-03-17 10:01:12

+0

@DotNetWise:您可以使用['流星建造'](http://docs.meteor.com/#/full/meteorbuild)生成新版本(目标目录内容被覆盖),然后['pm2'] (http://devo.ps/blog/goodbye-node-forever-hello-pm2/)'restart'重新启动'node.main.js'。退房还[流星](https://github.com/arunoda/meteor-up)。 – 2015-03-18 02:09:03

+1

我已经尝试过mup,但我完全失望。它甚至没有正确安装 – Adaptabi 2015-03-20 13:49:37