Spring boot docker don'内的弹簧靴;定义要使用的spring环境配置文件后,加载application.properties

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

我使用Jib生成并推送到DockerHub一个Spring引导映像

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()