使用TestContainers启动Vault容器时,容器公开的端口是在启动过程中随机选择的。
@Container
static VaultContainer vaultContainer = new VaultContainer<>("vault:1.7.2")
.withVaultToken(TOKEN)
.withInitCommand("secrets enable --path foo kv-v2")
.withInitCommand("kv put foo/app bar=foo");使用@DynamicPropertySource重写属性
@DynamicPropertySource
static void addProperties(DynamicPropertyRegistry registry) {
registry.add("spring.cloud.vault.host",()->vaultContainer.getHost());
registry.add("spring.cloud.vault.port",()->vaultContainer.getFirstMappedPort());
registry.add("spring.cloud.vault.uri",()->"http://"+vaultContainer.getHost()+":"+vaultContainer.getFirstMappedPort());
registry.add("spring.cloud.vault.token",()->TOKEN);
}不起作用,因为Spring Cloud Vault似乎看不到添加的属性。
Spring-Boot 2.5.1和Spring-Cloud-Vault-Config 3.0.3中存在此问题。
可以在GitHub上找到一个显示该问题的小项目。
我是不是做错了什么,或者有没有替代配置的方法?
当使用带有@VaultPropertySource而不是Spring-Cloud-Vault的Spring-Vault时,事情会按预期工作。
发布于 2021-06-23 15:54:22
根据https://github.com/spring-cloud/spring-cloud-vault/issues/602#event-4926845049的说法,这是一个spring-framework问题。
https://stackoverflow.com/questions/67961656
复制相似问题