Мое приложение работает нормально, если я запускаю приложение на своем хосте, используя
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-файлы.
эта ссылка мне очень помогла:
пружинные сапоги, тимьян, листы, не разрешающие, после упаковки