bootstrap.yml多环境配置_Nacos 多环境配置
本文探讨一下如何实现不同环境(开发、测试、灰度、正式)的配置管理问题。
就像Maven用groupId、artifactId、version三者来定位jar包在仓库中的位置一样,Nacos也提供了 Namespace (命名空间) 、Data ID (配置集ID)、 Group (组) 来确定一个配置文件(或者叫配置集)。
由此,实现多环境配置的方案也有三种:
1、用命名空间(namespace)来区分不同的环境,一个命名空间对应一个环境;
2、用配置组(group)来区分不同的环境,命名空间用默认的public即可,一个组对应一种环境;
3、用配置集ID(Data ID)名称来区分不同的环境,命名空间和组用默认的即可,通过文件命名来区分;
接下来,逐个来看
http://{host}:{port}/nacos
http://{host}:{port}/nacos/index.html
默认用户名密码都是nacos
![](https://img.haomeiwen.com/i2501393/ae4e90540987a59d.png)
为了方便演示,这里建了一个名为example的Spring Boot项目
![](https://img.haomeiwen.com/i2501393/f2ba3f4d86ea2108.png)
bootstrap.yml
spring:
application:
name: example
cloud:
nacos:
config:
server-addr: 192.168.100.10:8848
file-extension: yaml
- 利用 Data ID 命名 来区分环境
利用Data ID命名来区分环境,命名空间和组默认即可
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
{spring.profiles.active}.
{prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
![](https://img.haomeiwen.com/i2501393/979fedec19178e82.png)
![](https://img.haomeiwen.com/i2501393/c5c98924edaf97cd.png)
![](https://img.haomeiwen.com/i2501393/c4831c8c19ebfa87.png)
![](https://img.haomeiwen.com/i2501393/53a718ce21508eca.png)
![](https://img.haomeiwen.com/i2501393/19b7755102a87c43.png)
用命令行启动也是一样的
![](https://img.haomeiwen.com/i2501393/2f61965779b12814.png)
例如:
java -Dspring.profiles.active=test -jar example-0.0.1-SNAPSHOT.jar
- 利用 Group 来区分环境
项目不变,我们把spring.application.name改成example2
命名空间用默认的public
![](https://img.haomeiwen.com/i2501393/cf9197fb4a2feb31.png)
![](https://img.haomeiwen.com/i2501393/3483d1c6333e863c.png)
![](https://img.haomeiwen.com/i2501393/929c7ddc37497f6a.png)
java -Dspring.cloud.nacos.config.group=DEV_GROUP -jar example-0.0.1-SNAPSHOT.jar
-
利用 Namespace 区分环境
image.png
创建命名空间的时候,如果不指定ID,则自动生成的id就是这样的uuid字符串,我们还是自己指定一个有意义的ID吧
image.png
image.png
image.png
image.png
image.png
image.png
image.png
java -Dspring.cloud.nacos.config.namespace=ns_dev -jar example-0.0.1-SNAPSHOT.jar
java -Dspring.profiles.active=test
-Dspring.cloud.nacos.config.namespace=ns_test
-Dspring.cloud.nacos.config.group=TEST_GROUP
-jar example-0.0.1-SNAPSHOT.jar
- 小结
第一种,用 Data ID 区分环境,虽然简单,但是每个项目要创建4个配置文件,随着项目的增多,都在一个命名空间下会显得很混乱,查找起来也不是很方便,而且不利于做权限控制
第二种,用Group区分,问题也是一样的
综上,最好的是用Namespace区分环境,清晰明了,而且有利于做权限控制