在Openshift上热点部署node.js应用程序会发生什么?

从我能find的文档中 ,我不明白在一个node.js应用程序在Openshift中被热部署时发生了什么。

以下假设是否正确?

  1. 现有的node.js应用程序已停止。
  2. 带有新推送代码的新node.js应用程序将启动。
  3. 无论现有的node.js应用程序中的内存是什么,都不会传输到新的。
  4. 如果这些应用程序使用数据库(在其他盒式磁带中),则该数据库不会重新启动。 现有的应用程序closures它的连接,新的应用程序创build一个新的应用程序。
  5. 因此,如果您需要运行新推送的node.js代码所需的数据库脚本,则不build议进行热部署。

我认为回答这个问题的最好方法是去源头 。

作为构build生命周期的一部分(git commit),post_deploy控制操作就是get的调用。

根据盒式磁带的configuration方式(如果使用npm和使用pipe理程序),盒式磁带的行为将有所不同。 如果使用NPM,盒式磁带将重新启动,如果不使用监督器,盒式磁带将重新启动。 它只有在你没有使用NPM并且pipe理程序正在运行的时候,才能执行热部署function,如文档中所述。

热部署应用程序使您的更改无需重新启动应用程序盒式磁盘即可生效,从而提高部署速度并最大限度地减less应用程序停机时间。

我试图从openshift的热部署官方来源find很多文档,但是我没有看到任何东西,

我不是说我真的在回答你的问题,但是这里有一些关于热门部署的方法,每个人都必须阅读

它只是创build一个服务器,监视您的js文件的变化。现在,无论何时您修改js,代码都会注意到并用新代码replace本地js。 任何现有的请求将继续使用旧的代码,而任何新的传入的请求将使用新的代码。 所有这些都不closures服务器,反弹任何请求,过早地杀死任何请求,甚至依靠智能负载平衡器。

我猜openshift做同样的事情时,热启动标记启用(我不知道,这可能不是这种情况)。 现在在这种情况下,回到你的问题:

  1. 停止现有的node.js应用程序,并启动一个新的带有新推送代码的node.js应用程序: NO

  2. 如果这些应用程序使用数据库(在其他盒式磁带中),则该数据库不会重新启动。 现有的应用程序closures其连接,新的应用程序创build一个新的: