"meteor run --production" 与 MONGO_URL 对比捆绑
"meteor run --production" with MONGO_URL vs. bundling
也许我的问题与 this 重复,但我觉得它增加了一些细节,使其有所不同。
我目前有一个基于 node:0.10 图像的 Meteor Docker 设置,它首先捆绑应用程序并运行 "node main.js" 作为其 CMD。该映像还安装了 Meteor 并使用其命令 bootstrap 环境并安装必要的包。
我突然想到,如果不使用 node:0.10,我可以使用更小的 Linux 图像并简单地安装 curl/git/meteor,图像将会大大简化。删除构建步骤将进一步简化事情,因为根据我的理解 "meteor build" 没有办法不构建移动应用程序,如果它们已配置但不需要(即如果我通常构建 Android/IOS 应用程序,我可以如果我只想要一个捆绑包,那么不 很容易构建它们)。此外,我的开发环境已经使用 MONGO_URL 和一个容器化的 MongoDB 实例,所以我在开发时甚至没有使用本地数据库。
那么,"meteor run --production" 和 MONGO_URL 和 "node main.js" 有什么区别?在一种情况下会发生什么,而在另一种情况下不会发生?
特别是,"meteor run --production" 是否检测到 MONGO_URL 的存在,而不是启动一个单独的、未使用的 mongod?我清楚地看到 MONGO_URL 指向的数据库中的数据,但我不确定 meteor 命令是否启动了一个单独的数据并浪费了 CPU cycles/RAM。根据前面的问题,我收集到它仍然轮询文件系统以进行更改。但这是否只是在 Linux 下使用 inotify,我假设这是一个相当小的性能影响是否正确?
我想,如果我需要服务器的每一点性能,捆绑是可行的方法。但是,如果设置 MONGO_URL 的 运行 "meteor run --production" 仅对性能造成轻微影响,同时极大地简化了我的设置,那么简化我的 Docker 文件并统一我的 dev/production 设置得更紧密一些。
谢谢。
任何 meteor
命令都使用 MONGO_URL
指定的数据库,并且只使用该数据库。当在另一个终端中 运行 meteor test-packages
to avoid the overhead of spinning up a Mongo instance if the package doesn't do anything database-related. For peace of mind, you can double check that by running htop 并看到没有创建 mongo 进程时,我通常将 MONGO_URL
指向一个空白字符串。
关于 meteor run --production
监视文件系统的更改,是的,这是一个很小的 CPU 开销。 htop 再次可以提供帮助。
"meteor build" has no means to not build mobile apps if they're configured but not needed (I.e. if I normally build Android/IOS apps, I can't easily not build them if I just want a bundle)
在预构建步骤中,如果您不这样做,您可以轻松地将 .meteor/platforms 替换为 server\nbrowser
(删除 android
和 ios
行)不需要移动平台。
捆绑然后 运行 node main.js
的一个优点是您可以使用 pm2(better alternative to forever) to keep your application running instead of crashes. However, see also Meteor Up.
需要注意的一点是 meteor run --production
... 表示 "run in an development environment that simulates production" 而不是 "this is how you should run your app in production"。
因此,当您 运行 以上命令时,process.env.NODE_ENV 设置为 development
。
https://github.com/meteor/meteor/issues/180#issuecomment-30043150
也许我的问题与 this 重复,但我觉得它增加了一些细节,使其有所不同。
我目前有一个基于 node:0.10 图像的 Meteor Docker 设置,它首先捆绑应用程序并运行 "node main.js" 作为其 CMD。该映像还安装了 Meteor 并使用其命令 bootstrap 环境并安装必要的包。
我突然想到,如果不使用 node:0.10,我可以使用更小的 Linux 图像并简单地安装 curl/git/meteor,图像将会大大简化。删除构建步骤将进一步简化事情,因为根据我的理解 "meteor build" 没有办法不构建移动应用程序,如果它们已配置但不需要(即如果我通常构建 Android/IOS 应用程序,我可以如果我只想要一个捆绑包,那么不 很容易构建它们)。此外,我的开发环境已经使用 MONGO_URL 和一个容器化的 MongoDB 实例,所以我在开发时甚至没有使用本地数据库。
那么,"meteor run --production" 和 MONGO_URL 和 "node main.js" 有什么区别?在一种情况下会发生什么,而在另一种情况下不会发生?
特别是,"meteor run --production" 是否检测到 MONGO_URL 的存在,而不是启动一个单独的、未使用的 mongod?我清楚地看到 MONGO_URL 指向的数据库中的数据,但我不确定 meteor 命令是否启动了一个单独的数据并浪费了 CPU cycles/RAM。根据前面的问题,我收集到它仍然轮询文件系统以进行更改。但这是否只是在 Linux 下使用 inotify,我假设这是一个相当小的性能影响是否正确?
我想,如果我需要服务器的每一点性能,捆绑是可行的方法。但是,如果设置 MONGO_URL 的 运行 "meteor run --production" 仅对性能造成轻微影响,同时极大地简化了我的设置,那么简化我的 Docker 文件并统一我的 dev/production 设置得更紧密一些。
谢谢。
任何 meteor
命令都使用 MONGO_URL
指定的数据库,并且只使用该数据库。当在另一个终端中 运行 meteor test-packages
to avoid the overhead of spinning up a Mongo instance if the package doesn't do anything database-related. For peace of mind, you can double check that by running htop 并看到没有创建 mongo 进程时,我通常将 MONGO_URL
指向一个空白字符串。
关于 meteor run --production
监视文件系统的更改,是的,这是一个很小的 CPU 开销。 htop 再次可以提供帮助。
"meteor build" has no means to not build mobile apps if they're configured but not needed (I.e. if I normally build Android/IOS apps, I can't easily not build them if I just want a bundle)
在预构建步骤中,如果您不这样做,您可以轻松地将 .meteor/platforms 替换为 server\nbrowser
(删除 android
和 ios
行)不需要移动平台。
捆绑然后 运行 node main.js
的一个优点是您可以使用 pm2(better alternative to forever) to keep your application running instead of crashes. However, see also Meteor Up.
需要注意的一点是 meteor run --production
... 表示 "run in an development environment that simulates production" 而不是 "this is how you should run your app in production"。
因此,当您 运行 以上命令时,process.env.NODE_ENV 设置为 development
。
https://github.com/meteor/meteor/issues/180#issuecomment-30043150