如何在AWS Elastic Beanstalk中为几个grails环境使用单个.war?

如何在AWS Elastic Beanstalk中为几个grails环境使用单个.war?,grails,amazon-web-services,environment-variables,amazon-elastic-beanstalk,Grails,Amazon Web Services,Environment Variables,Amazon Elastic Beanstalk,我在Elastic Beanstalk中运行了几个Grails应用程序环境。不必为不同的环境构建和上载不同的.war文件,这将节省大量时间(我将所有环境差异作为系统属性传递到“容器”配置区域,因此没有外部配置文件)。根据本文,可以使用单个.war并通过传递grails.env属性来动态设置环境,但这似乎是不可能的,因为beanstalk将您限制为一组预定义的命名系统属性(JDBC_CONNECTION_STRING、PARAM1、PARAM2等) 我的最佳方法是什么?将PARAM1设置为配置文件

我在Elastic Beanstalk中运行了几个Grails应用程序环境。不必为不同的环境构建和上载不同的.war文件,这将节省大量时间(我将所有环境差异作为系统属性传递到“容器”配置区域,因此没有外部配置文件)。根据本文,可以使用单个.war并通过传递grails.env属性来动态设置环境,但这似乎是不可能的,因为beanstalk将您限制为一组预定义的命名系统属性(JDBC_CONNECTION_STRING、PARAM1、PARAM2等)


我的最佳方法是什么?

将PARAM1设置为配置文件的名称

然后在Config.groovy中

grails.config.locations = [ System.getProperty("PARAM1") ]

或者,您也可以通过类似于dynamic config插件的方式,在数据库中为每个环境存储不同的配置-

将PARAM1设置为配置文件的名称

然后在Config.groovy中

grails.config.locations = [ System.getProperty("PARAM1") ]

或者,您可以通过类似于dynamic config插件的东西在数据库中存储每个环境的不同配置-

事实证明,您可以传递任意参数,包括环境变量,通过配置的“容器”区域中的“JVM命令行选项”字段连接到容器

-Dgrails.env=DesiredEnvironmentName 

工作起来很有魅力,我现在为所有环境使用一个.war。

事实证明,您可以通过配置“容器”区域中的“JVM命令行选项”字段将任意参数(包括环境变量)传递到容器

-Dgrails.env=DesiredEnvironmentName 

工作起来很有魅力,我现在对所有环境都使用一个.war。

我想避免使用任何特定于环境的配置文件(或者一般的任何文件,因为这会使.war到beanstalk实例的普通部署复杂化),我想避免使用任何特定于环境的配置文件(或者任何文件,因为这会使.war在beanstalk实例中的常规部署复杂化)