微服务项目实施过程中,要求 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"]