我有一个基于grail-2.4.5的应用程序。工件(一个WAR文件)被部署到生产环境中;应用程序运行良好。现在我想运行一些与数据库迁移插件相关的grails命令:特别是grails dbm-tag
和grails dbm-rollback
。我不知道该怎么做。欢迎提出任何建议;有更好的方法吗?
版本:
- Grails 2.4.5 Tomcat 8.0.24
- 这是一个12因子风格的应用程序,所以没有配置存储在应用程序或源;它们被从环境中拉出来。所以必须从环境运行。
- 即使生产配置存储在源中;生产环境被锁定,我无法从外部连接到它来运行
grails production ...
- 理想情况下,这可以通过命令行实现,因为所有这些服务器都是由
salt
管理的。 - 最后,只有从CI服务器生成的工件(WAR文件)才允许被提升到上游环境,如稳定、阶段和生产环境,以确保测试和运行的版本在整个发布过程中是一致的。
我正在看的东西:
- 修改生成的WAR文件,以包含指向grails命令行应用程序的清单信息。
- 查看是否可以通过tomcat管理器处理。
基本上,您需要一种在生产机器上运行grails代码的方法。选项是-远程控制插件,控制台插件,您的自定义控制器与触发动作的安全端点,甚至一个自定义的石英作业,你可以用石英监视器插件手动启动。
所有这些的问题是,您正在打开生产环境中的潜在漏洞。
既然你谈论的是数据库上的操作,你也可以有一个未打包的grails应用程序连接到生产数据库,并从那里运行这些命令。
我没有看到任何用于连接远程Grails实例的内置方法。看一下grails远程控制插件