我正在使用spring cloud配置服务器来托管项目中使用的所有属性文件配置的集中位置。 我尝试使用下面的本地文件系统中的配置文件,它工作正常:
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=file://${HOME}/Documents/test-config/cloud-config-properties/
我还使用了git repo:spring.cloud.config.server.git.uri=ssh://xxxxxx.com:7999/test/cloud-config-properties.git
我想在我的项目中尝试使用它的组合。 示例 - 对于开发/测试配置文件 - 我想从本地文件系统使用和生产 - 我想使用Git存储库。 我在配置服务器应用程序的application.properties中启用了git uri和native配置文件。但是始终从本地文件系统中获取属性。这可能吗?
答案 0 :(得分:2)
不支持开箱即用,但有一种解决方法。您可以通过设置属性(在配置服务器中)来定义配置服务器的basedir,它是保存从远程服务器获取的文件的位置:
spring.cloud.config.server.git.basedir=<your_dir>
如果您正在使用docker,则可以将此目录映射到主机文件系统。
如果配置服务器中的任何文件与请求中的任何应用程序/配置文件匹配,那么您放入的任何文件都将被选中。例如,您可以在其中放置一个名为application-dynamic.properties的文件,并让所有客户端使用dynamic作为最后一个配置文件,例如
spring.profiles.active=systesting,dynamic
这样,您在application-dynamic.properties中放置的所有内容都将覆盖配置存储库中定义的内容。
有一点需要注意的是,您只需在配置服务器启动后添加文件,因为它会在启动时删除此文件夹。
有人说,在生产中这样做不好(例如重启会导致文件被删除),但对于test / dev来说这是最好的选择。