SpringBoot 多配置方案

微服务项目实施过程中,要求 Jar 包在多种工作环境通用,并且后续会进行容器化部署。

最后采取 nacos 配置中心 + bootstrap.yml 文件占位符的方式。由 nacos 配置中心集中管理开发、测试、生产等环境的配置文件。通过 bootstrap.yml 占位符接受环境参数来定义 nacos 配置中心的地址、组、命名空间等信息,并使用 -Dspring.profiles.active 选择配置文件。

如下:

server:
  port: 
  servlet:
    context-path: /
spring:

  application:
    name: 
  cloud:
    nacos:
      username: nacos
      password: nacos
      discovery:
        server-addr: ${nacos_addr:localhost:8848}
        group: ${nacos_group:DEFAULT_GROUP}
        namespace: ${nacos_namespace:public}
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        prefix: ${spring.application.name}
        group: ${nacos_group:DEFAULT_GROUP}
        namespace: ${nacos_namespace:public}

打包成镜像之后,就可以通过 ENTRYPOINT 来定义这些信息,在 Deployment 或者 Pod 的配置文件中覆盖 ENTRYPOINT 的内容。

ENTRYPOINT ["sh", "-c", "java -Dspring.profiles.active=dev -Dnacos_addr=127.0.0.1 -Dnacos_group=dev -Dnacos_namespace=dev -jar xxx.jar"]