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

如何在 AWS Elastic Beanstalk 上修改 Nginx 配置

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 中更改数据库配置

如何在 AWS Elastic Beanstalk 中选择特定平台?

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?