本地配置文件覆盖apollo配置解决方案
由于新项目使用的是apollo,有时候本地启动服务时想要临时修改配置,比如修改端口号,但是又不想线上开发环境的配置变更,所以就有了仅修改本地配置的需求。
因此找了一圈怎么使用本地配置覆盖apollo配置,但都没有找到比较满意或者方便的解决方案。也有人提出了相关的issue: 希望实现通过指定 profile 的方式在本地覆盖远程 Apollo 配置, 回复的方案也是比较麻烦。
一怒之下,决定翻翻源码自己写个插件来实现覆盖掉apollo的配置,适用于spring boot项目。代码仓库:local-overwrite-apollo
食用方法如下:
-
引入maven依赖
<dependency> <groupId>org.eu.defe</groupId> <artifactId>local-overwrite-apollo</artifactId> <version>0.0.5</version> </dependency>
-
本地项目根目录下创建
.env
文件夹, 然后创建local.properties
或者local.env
文件到.env
文件夹下. (local.env
文件可以同时spring的宽松绑定格式,也可以支持properties格式。)local.env
# 环境变量形式 SPRING_APPLICATION_NAME=app-demo1 # 直接的properties形式 server.port=18080
-
从git中排除本地配置文件,避免误提交本地配置到远程。或者,你也可以配置到
.git/exclude
里。echo "/.env/" >> .gitignore
-
现在,你就可以在本地的
local.env
文件进行本地配置,本地配置将会比apollo的配置优先级更高。