본문 바로가기
마구니 패치 노트

로컬에서 정상작동하는 페이지가 도커에서 500 반환

by puy0 2026. 1. 14.

이미 로컬, ec2 에서 정상작동 하던 서버가
도커 컨테이너에서 톡정 페이지만 문제가 발생하는 현상을 발견했다
만든지 오래된 코드며 대부분의 문제는 다 찾은 줄 알았는데
구동 환경에 따라 로컬라이징이 필요 하다는것을 알게 되었다

이번 문제로그의 전문은 맨 하단에 있다

봐야 할 부분은 다음과 같다

2026-01-14T06:37:56.369Z ERROR 1 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine
: [THYMELEAF][http-nio-8080-exec-6] Exception processing template "user/userJoin": 
Error resolving template [user/userJoin], 
template might not exist or might not be accessible by any of the configured Template Resolvers

 

 

해당 부분은 당연히 이전에 정상작동 하던 페이지 요청 파트다

오래된 코드는 오래된 버전에 대응 되었기 때문에

이 페이지가 최신 thymeleaf를 끌어오지 못하는 것이라 추측했지만
thymeleaf의 버전이 기입되어 그대로 가져오고 있었다

thymeleaf가 해당 정보를 받아오지 못하는 것이라는 두번째 추측을 했다

thymeleaf 가 탬플릿 루트에서 /user/userjoin.html을 찾지 못하기 때문인데

그 이유는 대소문자 였다

 

return의 모든 대문자를 수정 했다

 

 

해당 문제의 원인은 찾았지만 그 원인은 알지 못했다

이러한 오류는 많은사람들이 겪었으며 그들도 로컬과 대상환경의 차이로 인해 문제를 겪었고

그 원인 추측은 원도우에서의 대소문자 무시로 인해 경로가 찾아지며
리눅스 환경에서는 찾지 못한다
라고 공통된 추측을 한다

 

나의경우 클라우드 리눅스 환경에서도 동작했다

이 서버는 우분투24, 센토스, 아마존리눅스 에서 동작했었고

윈도우10,11 에서 모두 정상이었으며

도커의 컨테이너에서 문제가 발생 했다

가상환경의 디랙토리 분활 문제일까 > 독립 환경이어도 찾는 프로세스는 자기 os를 따라감

에초에 jvm에서 돌아갈 탠데 왜 환경의 영향을 받을까 > jvm이 돌아가도 자원은 os가 찾아주겠지

 

나는 이것을 명확히 하고싶었다

https://learn.microsoft.com/ko-kr/windows/wsl/case-sensitivity 여기서 대소문자 허용여부를 변경 할 수 있다고 한다

 

대/소문자 구분

Windows 및 Linux 파일 시스템 간에 대/소문자를 구분하는 파일 이름을 처리하는 방법, WSL을 사용하여 디렉터리별로 이러한 설정을 조정하는 방법 및 문제를 해결하는 방법을 알아봅니다.

learn.microsoft.com

 

 

사용할 수 있는지 없는지 확인

 

결론적으로 이건 파일시스템에서 허용설정을 변경하는거고 jvm리소스탐색에 관여할 수 없었다

 

 

빌드된 jar에서 뽑아낸 따끈따끈한 파일명을 체크한다

 

아 난 모르겠다

 

 

2026-01-14T06:37:56.369Z ERROR 1 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-6] Exception processing template "user/userJoin": Error resolving template [user/userJoin], template might not exist or might not be accessible by any of the configured Template Resolvers


org.thymeleaf.exceptions.TemplateInputException: Error resolving template [user/userJoin], template might not exist or might not be accessible by any of the configured Template Resolvers

	at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372) ~[thymeleaf-spring6-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192) ~[thymeleaf-spring6-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]

	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1415) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1159) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.12.jar!/:6.0.12]

	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.13.jar!/:na]

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.13.jar!/:na]

 

참고

https://greathyeon.tistory.com/34

 

[Spring Boot] thymeleaf 에러 : org.thymeleaf.exceptions.TemplateInputException

로컬에서는 잘 되던 코드가 aws에 올리고 나니 에러를 일으켰다.그야말로 어...? 아까는 됐는데 상황이다.바로 putty 에서 에러 로그를 살펴봤습니다.  Exception processing template "pages/myPage/indexMypage

greathyeon.tistory.com

https://learn.microsoft.com/ko-kr/powershell/module/microsoft.powershell.core/about/about_case-sensitivity?view=powershell-7.5

 

댓글