如果您使用的是 Pivotal Spring Cloud Services,您可以searchPaths
像这样使用多个创建服务:
cf create-service -c '{ "git": { "uri": "https://github.com/dmikusa-pivotal/cook-config.git", "label": "search-paths", "searchPaths": "dev,prod" } }' cook-config-server
该searchPaths
参数仅采用逗号分隔的搜索路径/模式列表。
dev
您指向的存储库应该具有名为and的顶级文件夹prod
。然后,配置服务器将从搜索路径文件夹中返回<app-name>.properties
(它支持的所有其他变体)。
您可以通过运行如下命令来验证您是否正在接收多个搜索路径的数据:
curl -k -H "Authorization: bearer $(curl -k -s -X POST 'https://p-spring-cloud-services.uaa.<system_domain>/oauth/token' -d 'grant_type=client_credentials&client_id=<insert client id>&client_secret=<insert client_secret>' | jq .access_token | cut -d '"' -f 2)" <insert uri>/cook/prod
您需要替换<system_domain>
为您的基础的系统域,<insert client id>
以及<insert client secret>
您的服务实例的客户端 ID 和密码(cf env <app>
针对具有绑定 SCS 配置服务器的应用程序运行以获取这些值)。
该命令将做两件事。首先,它将使用client_id
andclient_secret
来获取令牌。然后在第二个请求中使用该令牌从配置服务器实际请求一些数据。
如果您从多个搜索路径获取配置,您应该会看到这样的输出(请注意如何从子文件夹dev
和prod
子文件夹中获取数据):
{"name":"cook","profiles":["prod"],"label":null,"version":"5d5a3f26022dd00becdbad855c7d27ae530685f7","state":null,"propertySources":[{"name":"https://github.com/dmikusa-pivotal/cook-config.git/prod/cook.properties","source":{"cook.special":"Prod Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/dev/cook.properties","source":{"cook.special":"Dev Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/cook.properties","source":{"cook.special":"Not in Folder config"}}]}
希望有帮助!