当在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“:”...“}' –