我有一个Spring Boot 2应用程序的Docker映像, 在图像中,我使用spring.config.additional-location来传递存储在容器本身文件中的一些属性。
现在,我想在另一个容器中将此容器用作另一个容器中的层,或者在docker-compose文件中使用它,我可能需要覆盖spring.config.additional-location。
我试图在ENV变量中覆盖它:
public class DataSourceComponent extends HorizontalLayout {
private ComboBox dataSourceTable;
private CheckBox mandatory;
private List<DataSourceFieldComponent> fields;
...
public void setDataSource(DataSourceObject ds) { ... }
没有成功。
实现此目标的正确方法是什么。
答案 0 :(得分:1)
spring.config.additional-location的值必须是目录路径,而不是文件路径。我不确定这是错误还是功能,因为spring.config.location允许两者。
例如在docker-compose.yml内部,您可以将spring.config.additional-location设置为:
version: '3'
services:
myapp:
build: .
environment:
- "SPRING_CONFIG_ADDITIONAL-LOCATION=file:/opt/myapp/config/"
- "SPRING_PROFILES_ACTIVE=production"
...
然后,Spring Boot将查找/opt/myapp/config/application-production.properties文件以从中加载属性。
中对此有更多了解