當在Docker容器中運行時,Spring Boot不讀取應用程序屬性。Spring Boot無法讀取Docker中的application.properties
我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泊塢窗插件,自動映射端口8080(搬運工):18080(主機),使應用程序,可對HTTP ://本地主機:18080
泊塢
- 服務器。上下文路徑屬性不適用。應用程序仍然可以用/,而不是與/郵件/
- custom.greeting財產不能讀取屬性文件和控制器返回{「問候語」:空}代替{「問候語」:「你好陽明」 }
沒有泊塢
上下文路徑施加適當
custom.greeting屬性返回由控制器適當
你的'application.yml'文件在哪裏?它看起來不在類路徑中,即沒有包含在您在Docker鏡像中發佈的胖罐中。 –
src/main/resources路徑下的Application.yml,它位於類路徑中。我還添加了@PropertySource註釋並得到了同樣的問題 –
添加'spring-boot-starter-actuator'並查看端點'/ env'告訴您有關您的環境的信息。你應該看到類似於''applicationConfig:[classpath:/application.yml]「:{」custom.greeting「:」...「}' –