Grails有一个war command来创建一个Web应用程序存档(WAR)文件,该文件可以部署在任何符合Java EE的应用程序服务器上。
Heroku显然使用GIT和一个代码的整个存储库进行部署,从我在教程中收集到的内容(here和here)
您能否帮我理解这两个方面在高层次上的整合。在Heroku上运行就像在没有使用WAR的开发环境中运行一样?
谢谢,Ray
答案 0 :(得分:5)
在Heroku 上运行在容器中运行战争。
不同之处在于Heroku dyno是通过git hooks进行的。这意味着每当您推送到Heroku存储库时它都会构建。插件直接使用代码的原因是,这比将.war预打包到平台更有效。
插件的作用是促进git hook引入的依赖项。
当您推送代码时,git钩子会引入Grails和appserver的依赖关系并将它们打包在一起(插件所做的工作就是配置此过程)。
最后,应用程序在一个嵌入式容器中运行(或者我重新考虑,我没有看过插件,而不是自SpringOne2GX以来的基本内容),它是在一个特殊的staging dyno上打包并暂存,然后部署在你的计算dynos。
从您的应用程序的角度来看,您正在一个容器中运行,您可以像往常一样编写应用程序代码(除非您制作更多的dynos,他们的会话不会被复制,所以您不能依赖于相同的会话方式)。
编辑:
应该提到的是,如果你愿意的话,可以将预打包的战争推送到git仓库,构建系统非常灵活,你也不允许有一个'slug size '(基本上你的项目在准备运行时占用的空间)超过100mb。