Spring boot docker don'内的弹簧靴;定义要使用的spring环境配置文件后,加载application.properties
我使用Jib生成并推送到DockerHub一个Spring引导映像Spring boot docker don'内的弹簧靴;定义要使用的spring环境配置文件后,加载application.properties,spring-boot,docker-compose,yaml,application.properties,jib,Spring Boot,Docker Compose,Yaml,Application.properties,Jib,我使用Jib生成并推送到DockerHub一个Spring引导映像 mvn compile jib:build pom包含以下参考文件: <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <inc
mvn compile jib:build
pom包含以下参考文件:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.properties</include>
<include>languages.json</include>
</includes>
</resource>
</resources>
在docker compose中,我将应用程序-.yml和Spring活动配置文件也设置为使用
JAVA_WS_ENV_PROP_FILE=file:/config/application-WSTEST.yml
.jar还有一个application.properties文件;码头工人形象
从DockerHub下载图像后,我用dive在图像内部验证文件是否存在
应用程序运行失败,因为尚未解析application.properties中的属性
2020-11-13 14:23:05,673 ERROR org.springframework.boot.SpringApplication : Application run failed
smrt-java-ws | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springShopOpenAPI' defined in class path resource [ch/smartravel/config/SwaggerOASConfig.class]: Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'info.app.name' in value "${info.app.name}"
smrt-java-ws | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
smrt-java-ws | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
smrt-java-ws | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226)
smrt-java-ws | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
控制器终结点是:
@Configuration
public class SwaggerOASConfig {
@Bean
public OpenAPI springShopOpenAPI(
@Value("${info.app.name}") String appName,
@Value("${info.app.version:unknow}") String appVersion) {
return new OpenAPI()
根据,根本原因似乎是docker compose设置中的自定义
SPRING\u CONFIG\u位置
覆盖了默认设置,阻止应用程序查看其他位置,包括/app/resources/application.properties
这可能与此相关:假设您的问题相同,Jib团队无法复制它。如果你能提供一个小的可复制的样本,它将帮助Jib团队调查它;可以用另一种方式设置第二个资源文件吗?我可以用Jib标签在pom中放一个额外的文件,然后将其作为资源收费?我对Spring Boot并不太熟悉,但是docker compose环境中的Spring\u CONFIG\u LOCATION
是否会覆盖默认值?至少我知道您可以在SPRING\u CONFIG\u LOCATION
中指定。怎么样SPRING\u CONFIG\u LOCATION=file:/CONFIG/application WSTEST.yml,file:/app/resources/application.properties
?这个解决方法很好。谢谢,太多了,ChanseokOh!
2020-11-13 14:23:05,673 ERROR org.springframework.boot.SpringApplication : Application run failed
smrt-java-ws | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springShopOpenAPI' defined in class path resource [ch/smartravel/config/SwaggerOASConfig.class]: Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'info.app.name' in value "${info.app.name}"
smrt-java-ws | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
smrt-java-ws | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
smrt-java-ws | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226)
smrt-java-ws | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
@Configuration
public class SwaggerOASConfig {
@Bean
public OpenAPI springShopOpenAPI(
@Value("${info.app.name}") String appName,
@Value("${info.app.version:unknow}") String appVersion) {
return new OpenAPI()