Spring boot не находит шаблон при развертывании в докере - PullRequest
0 голосов
/ 01 сентября 2018

Мое приложение работает нормально, если я запускаю приложение на своем хосте, используя

mvn spring-boot:run

но при развертывании в докере он не работает и я получаю эту ошибку:

SEVERE: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] вызвало исключение [Ошибка обработки запроса; вложенное исключение: org.thymeleaf.exceptions.TemplateInputException: ошибка при разрешении шаблона "/ store / index", шаблон может не существовать или может быть недоступен для любого из настроенных преобразователей шаблонов] с коренной причиной org.thymeleaf.exceptions.TemplateInputException: ошибка разрешая шаблон "/ store / index", шаблон может не существовать или быть недоступным для любого из сконфигурированных резолверов шаблонов

но если я зайду по URL: http: localhost: 8080 / login, который контролируется Spring Security, шаблон будет отображаться нормально. Кажется, проблема с разрешением, но я не уверен.

вот мой 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"]

Решение: Оказывается, проблема, с которой я столкнулся, никак не связана с развертыванием докера. Я запустил файл JAR на своем хосте, и я получил ту же ошибку. Проблема заключалась в том, что, когда я возвращал URL представления в методах контроллеров, я начинал с косой черты, например: «/ ... / ...». И Spring не загружает представление с двойной косой чертой, когда приложение упаковано в файл .jar. Мне приходилось удалять символ косой черты в начале URL-адреса каждый раз, когда я возвращал ModelAndView, а также тег th: вставлять теги в мои html-файлы.

эта ссылка мне очень помогла: пружинные сапоги, тимьян, листы, не разрешающие, после упаковки

1 Ответ

0 голосов
/ 01 сентября 2018

добавьте ваш локальный каталог 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"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...