如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?
Posted
技术标签:
【中文标题】如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?【英文标题】:How to use a single .war for several grails environments in AWS Elastic Beanstalk? 【发布时间】:2012-07-23 03:31:16 【问题描述】:我在 Elastic Beanstalk 中运行我的 Grails 应用程序的多个环境。不必为不同的环境构建和上传不同的 .war 文件将节省大量时间(我将所有环境差异作为系统属性传入“容器”配置区域,因此没有外部配置文件) .根据这篇文章http://mrhaki.blogspot.ca/2011/02/grails-goodness-one-war-to-rule-them.html,可以使用单个 .war 并通过传递 grails.env 属性动态设置环境,但似乎不可能这样做,因为 beanstalk 将您限制为一组预定义的命名系统属性(JDBC_CONNECTION_STRING、PARAM1、PARAM2 等)
我最好的方法是什么?
【问题讨论】:
【参考方案1】:事实证明,您可以通过配置的“容器”区域中的“JVM 命令行选项”字段将任意参数(包括环境变量)传递给容器。
-Dgrails.env=DesiredEnvironmentName
就像一个魅力,我现在对所有环境都使用一个 .war。
【讨论】:
【参考方案2】:将 PARAM1 设置为配置文件的名称,
然后在 Config.groovy 中
grails.config.locations = [ System.getProperty("PARAM1") ]
或者,您可以通过动态配置插件 - http://grails.org/plugin/dynamic-config
为数据库中的每个环境存储不同的配置【讨论】:
我想避免使用任何特定于环境的配置文件(或任何一般文件,因为这会使 .war 到 beanstalk 实例的普通部署变得复杂)以上是关于如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?的主要内容,如果未能解决你的问题,请参考以下文章