如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章