實現多環境管理有下面幾種方式
1.使用Data ID
與profiles
實現
在 Nacos Config Starter 中,dataId 的拼接格式為
${prefix} - ${spring.profiles.active} . ${file-extension}
prefix 默認為 spring.application.name 的值,可以通過配置項 spring.cloud.nacos.config.prefix 來配置
spring.profiles.active 為當前環境對應的 profile
當 spring.profiles.active 為空,dataId 的拼接格式變成 ${prefix} . ${file-extension}
當 spring.profiles.active 不為空,沒找到 ${prefix} - ${spring.profiles.active} . ${file-extension},會找 ${prefix} . ${file-extension}
file-extension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置
eg:
應用端配置
server.port=8015 spring.application.name=service-comsumer spring.profiles.active=dev management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always spring.cloud.nacos.discovery.enabled=true spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.service=${spring.application.name} spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.file-extension=properties
nacos
service-comsumer-dev.properties
2.使用Group
實現
group 默認為 DEFAULT_GROUP,可以通過 spring.cloud.nacos.config.group 配置
在Nacos中是用來對Data ID
做集合管理的
把一個環境的配置視為一個集合,那么使用不同的集合就可以實現不同環境的配置管理
eg:
應用端配置
server.port=8015
spring.application.name=service-comsumer
spring.profiles.active=dev
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.service=${spring.application.name}
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.group=DEV_GROUP
nacos
service-comsumer.properties
3.使用Namespace
實現
用於進行租戶粒度的配置隔離。
不同的命名空間下,可以存在相同的Group
或Data ID
的配置。
可通過spring.cloud.nacos.config.namespace配置
eg:
添加命名空間
應用端配置
server.port=8015
spring.application.name=service-comsumer
spring.profiles.active=dev
namespace = c47dab76-4a76-4a3f-95bf-3b06caa05b41
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.service=${spring.application.name}
spring.cloud.nacos.discovery.namespace=${namespace}
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.namespace=${namespace}
應用啟動后
注:
沒設置spring.cloud.nacos.discovery.namespace,服務會在public下
命名空間dev下的配置
詳情
注:
namespace的配置不是使用名稱,而是使用Namespace的ID
補充:
對指定環境的配置,在發布腳本的啟動命令中,通過-D傳入系統參數的方式來動態指定,會更加靈活
eg:
-Dspring.profiles.active=dev