【问题标题】:How to separate different environment block in application.yml in Micronaut如何在 Micronaut 的 application.yml 中分离不同的环境块
【发布时间】:2022-11-11 23:34:45
【问题描述】:

在 Grails 中,application.yml 中有一个 environment: 块,我们可以在其中配置不同环境的相同属性,例如 developmenettestproduction。例如:

environments:
    development:
        logging:
            config: classpath:logback-dev.xml
        dataSource:
            dbCreate: create-drop  
            # url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
            driverClassName: org.postgresql.Driver
            dialect: org.hibernate.dialect.PostgreSQLDialect
            url: jdbc:postgresql://localhost/my_db
            username: 'user'
            password: 'user'
    test:
        dataSource:
            dbCreate: update
            url: jdbc:h2:mem:testDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
    production:
        logging:
            config: classpath:logback-prod.xml
        dataSource:
            dbCreate: none
            url: jdbc:h2:./prodDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
    ....

我们可以在 Micronaut 应用程序的 application.yml 中做同样的事情吗?

我知道我可以将 VM 选项 `-Dmicronaut.config.files 用于不同的服务器(环境),如下所示:

java -Dmicronaut.config.files=/etc/fooApp/application.yml -jar fooApp.jar

但我更喜欢使用 Grails 的方法,因为这样我只需要维护一个配置文件。

【问题讨论】:

    标签: micronaut


    【解决方案1】:

    您可以定义不同的 YAML 文件。每个环境的文件,例如 application.yml 用于 prod,application-test.yml 用于测试,application-yolo.yml 用于环境 yolo。

    关键是您通常在application.yml 中定义生产环境的所有键。对于其他环境,您可以覆盖专用键。

    给定以下application.yml 用于生产

    micronaut:
       server:
         port: 3000
    
    some:
       other:
         config: ABC
    

    并且您可能想要覆盖测试环境的some.other.config 值,您可以简单地创建以下application-test.yml

    some:
       other:
         config: XYZ
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多