我创建了一个 openshift do-it-yourself 墨盒并在那里部署了一个空的 play 2.1.1 框架模板(来自github 上的 opensas)应用程序。该应用程序运行完美,因此我开始构建一个基于 EBean 的简单持久层,该持久层持久化到内存数据库中的 H2。在我的本地开发机器上,play 应用程序编译并运行良好,所以我将它部署到 openshift。
在我的 openshift 生产部署配置文件中,我启用了在系统重新启动/部署时执行数据库演变的选项,如 opensas 建议的那样。
在开发模式下,play 会要求你对数据库运行挂起的进化,但在 prod 模式下,你必须从命令行指定它。让我们将 play 配置为自动应用进化。像这样编辑文件 conf/openshift.conf:
# openshift action_hooks scripts configuration
# ~~~~~
openshift.play.params="-DapplyEvolutions.default=true"
部署后,我只获得我的应用程序的维护页面。看起来要么不可能在 openshift 上运行 h2 in-mem 数据库,要么数据库演化脚本没有按应有的方式自动执行。
应该可以将应用程序迁移到 postgres 数据库(openshift 中的 postgres 插件),但对于这个应用程序,我希望在一个非常简约的软件堆栈上保持尽可能简单。
有人在openshift上做过H2吗?