Pas*_*stx 2 thymeleaf docker spring-boot docker-compose
当我像这样构建并运行我的应用程序时:
mvn clean install
mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)
一切正常。
当我尝试在 docker-compose 指定的 docker 容器内运行时
file:
version: "3.1"
services:
app:
container_name: thdnes-app
restart: always
build:
context: ./
dockerfile: Dockerfile
ports:
- "8080:8080"
Run Code Online (Sandbox Code Playgroud)
和 Dockerfile:
FROM openjdk:11-jdk
VOLUME /tmp
COPY /target/thdnes-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
Run Code Online (Sandbox Code Playgroud)
SpringBoot 启动正常(通过控制台输出判断,没有错误)。
但是当我导航到http://localhost:8080/login 时出现错误:
thdnes-app | 2019-07-26 13:32:11.361 ERROR 1 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "/login.html": Error resolving template [/login.html], template might not exist or might not be accessible by any of the configured Template Resolvers
thdnes-app |
thdnes-app | org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/login.html], template might not exist or might not be accessible by any of the configured Template Resolvers
thdnes-app | at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) ~[thymeleaf-spring5-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189) ~[thymeleaf-spring5-3.0.11.RELEASE.jar!/:3.0.11.RELEASE]
thdnes-app | at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1370) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1116) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.17.jar!/:9.0.17]
thdnes-app | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]
thdnes-app | at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.17.jar!/:9.0.17]
...
Run Code Online (Sandbox Code Playgroud)
在不涉及 Docker 的情况下进行测试时,模板存在并打包在 jar 中,但为什么它在容器内失败是我的问题。
小智 7
当通过 Maven 在本地启动时,我遇到了同样的问题
mvn spring-boot:run
一切都工作正常,但是当我从 docker 容器运行它时,thymeleaf 找不到模板。
/解决方案是从视图名称的开头删除,如下例所示:
前
public String findOwners(Model model) {
model.addAttribute("owner", new Owner());
return "/owners/findOwners";
}
Run Code Online (Sandbox Code Playgroud)
后
public String findOwners(Model model) {
model.addAttribute("owner", new Owner());
return "owners/findOwners";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |