【问题标题】:Spring boot not finding template when deployed on docker部署在 docker 上时 Spring Boot 找不到模板
【发布时间】:2019-02-07 09:35:25
【问题描述】:

如果我在主机上使用

mvn spring-boot:run

但是当我在 docker 上部署它时,它不起作用并且我收到了这个错误:

严重:servlet [dispatcherServlet] 的 Servlet.service() 在路径 [] 的上下文中抛出异常 [请求处理失败;嵌套异常是 org.thymeleaf.exceptions.TemplateInputException:解析模板“/store/index”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问] 根本原因是 org.thymeleaf.exceptions.TemplateInputException:错误解析模板“/store/index”,模板可能不存在或可能无法被任何配置的模板解析器访问

但如果我继续访问由 spring security 控制的 url: http:localhost:8080/login,则会正常呈现模板。似乎是权限问题,但我不确定。

这是我的 Dockerfile:

FROM openjdk
VOLUME /tmp
RUN touch engdevcommerce.jar
COPY target/engdevcommerce.jar engdevcommerce.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/engdevcommerce.jar"]

解决方案: 原来我遇到的问题与 docker 部署无关。我在我的主机上运行了 jar 文件,我得到了同样的错误。 问题是,当我在控制器方法中返回视图 url 时,我是从斜杠开始的: "/.../..." 。当应用程序打包为 .jar 文件时,spring 不会使用双斜杠加载视图。我必须在我返回 ModelAndView 的每个地方以及我的 html 文件上的 th:insert 标记处删除 url 开头的斜杠字符。

这个链接对我帮助很大: spring-boot-thymeleaf-not-resolving-fragments-after-packaging

【问题讨论】:

  • 在你的本地有 /store/index 吗?
  • 是的,文件在 jar 中,如果我在主机上本地运行 jar,它可以正常工作。回到家后,我会尝试将目录添加到我的 Dockerfile 中,如果它有效,我会告诉你。谢谢。

标签: spring docker spring-boot thymeleaf


【解决方案1】:

始终首先使用“java -jar your_app_name.jar”命令检查应用程序执行情况! 一般来说,这个问题主要通过检查以下 3 点来解决-

  1. 您的 application.properties 应具有条目- spring.thymeleaf.prefix=classpath:/templates/
  2. 您的控制器应返回模板的名称,不带任何前面的斜杠。由于 thymeleaf 配置区分大小写。
  3. 您的项目应遵循标准的 Spring Boot thymeleaf 目录结构。如果没有,请在您的 application.properties 文件中进行相应的更改。

【讨论】:

    【解决方案2】:

    将您的本地 index 目录添加到 dockerfile,这样它将创建 /store 并将 index 目录复制到 /store 然后您的 docker vm 将具有 /store/index 以及本地 index 目录中的内容

     ...
     ...
     ADD <local-index-directory> /store
     ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","- 
     jar","/engdevcommerce.jar"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 2020-11-21
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2022-07-12
      相关资源
      最近更新 更多