Spring Boot无法读取Docker中的application.properties

在Docker容器中运行时,Spring Boot不会读取应用程序属性。

我的application.yml

server: port: 8080 context-path: /mail custom: greeting: Hello YML 

Dockerfile

 FROM java:8-jre VOLUME /tmp COPY ./mail.jar /app/mail.jar RUN sh -c 'touch /app/mail.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/mail.jar" ] EXPOSE 8080 

还有一个简单的ApplicationController

 @RestController public class ApplicationController { private final Environment environment; @Autowired public ApplicationController(Environment environment) { this.environment = environment; } @RequestMapping(path = "/") public Hello hello() { final Hello hello = new Hello(); hello.setGreeting(environment.getProperty("custom.greeting")); return hello; } } 

我使用IntelliJ Docker插件,自动映射端口8080(泊坞窗):18080(主机),并使应用程序在http:// localhost:18080

docker

  1. server.context-path属性不适用。 应用程序仍然可用/而不是/邮件/
  2. custom.greeting属性不读取属性文件和控制器返回{“greeting”:null}而不是{“greeting”:“Hello YML”}

没有Docker

  1. 上下文path正确应用

  2. custom.greeting属性由控制器正确返回