当前位置: 首页 > 知识库问答 >
问题:

带有SpringBoot的Grails应用程序在不同的环境中使用不同的yml文件

葛磊
2023-03-14

我正在使用Grails 3.3.1和Spring boot。构建工具是gradle。所有与应用程序相关的属性都在application.yml文件中配置。

现在我想访问不同的。用于不同环境[开发、测试等]的yml文件。为此,我创造了不同的。每个环境的yml文件。用于运行服务器的命令是:grails-Dgrails。env=test run app Now当我访问任何属性时,它会提供来自应用程序测试的值。yml文件,如预期。

但当我访问服务器时。端口,它正在从应用程序读取此属性。yml代替应用测试。yml。

谁能帮我使用服务器运行应用程序吗。来自应用程序测试的端口。yml文件

服务器:端口:8081

服务器:端口:8443

我希望服务器在端口8443上运行,因为这个属性在application-test.yml.但是服务器在端口8081上运行,如application.yml所述

共有2个答案

艾翼
2023-03-14

您可以在启动时使用服务器直接覆盖端口。端口或-Dserver。端口

如果您想要完全不同的YML,可以设置spring。配置。位置作为参数。举个例子:

# start service
/opt/jdk/bin/java \
  -Dserver.port=<your port> \
  -jar /opt/service/<your warfile> --spring.config.location=<your YML>

参考:如何为Spring Boot应用程序配置端口

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-use-short-command-line-argumentsboot-application

宋飞掣
2023-03-14

我可以通过在. yml文件中为每个环境添加server.port来解决上述问题

development:
    dataSource:
        dbCreate: none
        url: //url
        logSql: true
        username: //username
        password: //password
        driverClassName: "oracle.jdbc.driver.OracleDriver"
        pooled: true
        jmxExport: true
    server:
        port: 8081
        contextPath : /ssp
test:
    dataSource:
        dbCreate: none
        url: //url
        username: //username
        password: //password
        driverClassName: "oracle.jdbc.driver.OracleDriver"
        pooled: true
        jmxExport: true
        logSql: true
    server:
        port: 8082
        contextPath : /ssp
 类似资料:
  • 我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。

  • 我正在使用一个具有不同测试环境(test、QA、UAT、PROD)Spring boot应用程序的关键云代工,我创建了多个属性文件(每个指向不同的数据库),如 或者,当我转移到更高的环境时,我需要改变吗? 提前道谢。

  • 问题内容: 我发现我有多个环境(例如测试和生产)是很常见的,但是我希望启动的Docker容器在两种环境中都是相同的。唯一的区别是我想使用来指定的应用程序配置。由于我有多个容器以及它们之间的依赖关系,因此我想使用docker- compose 。但是afaik我只能在文件内部指定一个(请参阅docs)。如果是这种情况,那么我需要将我的原始文件克隆到两个不同的文件(一个用于测试,一个用于产品),以指向

  • A Zen student went up to a hot dog vendor and said: "Make me one with everything". — Joke 环境背景很重要。 如果你想对 Puppet 的配置清单在应用到生产环境之前先进行测试, 你可以使用 Puppet 的 environment 特性来做到。 这可以让你根据环境应用不同的配置清单来设置客户机。例如,你可以定

  • 我发现有多个环境(例如test和prod),但我希望启动的Docker容器在这两个环境中是相同的。唯一的区别是应用程序配置,我希望使用来指定它。因为我有多个容器和它们之间的依赖关系,所以我想使用docker-compose。但是afaik I只能在文件中指定(请参见文档)。如果是这种情况,那么我需要将原来的克隆到两个不同的文件(一个用于test,一个用于prod),以指向不同的env文件。这意味着

  • 我如何配置Bean,从一个新的yml文件加载和工作所有属性,从另一个新的yml加载和工作另一个Bean?最佳实践是什么? 我发现了使用的示例,并且这个bean可以读取几个资源(yml文件),但是在另一个bean中,当我读取这个时,我无法获得特定的yml,因为这个的将包含我添加到其中的所有yml资源。