Dev Blog
search
이주여이
찍먹좌
Today
Yesterday
✅ 진행은 root 계정이 아닌 배포할 도커 컨테이너의 관리자 계정으로 진행했다.(컨테이너 1개 당 각각 다른 관리자 계정을 가진다)
(참고) 컨테이너 전용 계정 docker 그룹에 추가
$ usermod -aG ${그룹명 } ${계정명 }
$ cat /etc/group # 그룹 및 그룹에 속한 계정 확인
${프로젝트명 }-0.0.1-SNAPSHOT.jar
오른쪽 클릭 - Open In - Explorerjdk 버전은 구글에 검색하면 잘나오니 확인하고 다운로드 받도록 한다. 혹은 docker search ${이미지명 }
을 통해 검색한다.
$ docker pull openjdk:17-alpine
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=*.jar
ADD ${JAR_FILE} app.jar
EXPOSE 80
WORKDIR /home/user5221
VOLUME /home/download/
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]
$ docker build -t blog .
$ docker run -d \
> --name blog \
> -p 3000:80 \
> blog
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80eb44c2d36d blog "java -jar -Dspring.…" 16 seconds ago Up 15 seconds 0.0.0.0:3000->80/tcp, :::3000->80/tcp blog
검색해보니 기본적으로 jar 파일의 classpath의 기본 값은 public/, resources/, static/, templates/, META-INF/\*\*, \*
인데 IntellJ에서는 컨트롤러의 return 타입에 ‘/’가 1개 더 붙더라도 알아서 처리해주지만 jar 배포할 때는 처리해주지 않는다.
2024-07-05T03:23:56.802Z ERROR 1 --- [p-nio-80-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Request processing failed: org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/login],
template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause
위와 같이 src/main/resources/templates 경로 뒤에 ‘/’가 붙기 때문에 컨트롤러에서 return 값으로 ‘/’를 붙여버리면 //${templates 내 파일명 }
이 되기 때문에 에러가 발생한다.
따라서 컨트롤러에서 return 타입을 String으로 갖고있는 메소드들의 반환 타입들을 확인 후 return "/ ..."
return 뒤에 ‘/’가 붙을 경우 아래와 같이 지워준다.
// 변경 전
@GetMapping("/login")
public String login() {
return "/login";
}
// 변경 후
@GetMapping("/login")
public String login() {
return "login";
}
잘나오는 것을 확인할 수 있다!
외부에서도 볼 수 있게 하고싶다면 docker run 할 때 지정했던 포트 번호를 공유기랑 가상 서버에 포트 포워딩 시켜주면 된다. 하는 방법은 이전 포스팅에서 많이 다뤄서 패스한다.
PS. 다시 보니 도커 컨테이너 관리자 계정명은 user5221인데 포트는 3000..😅
참고 레퍼런스
[Network | Docker] Apache, Docker Compose를 이용한 Reverse Proxy 구성 (0) | 2024.07.17 |
---|---|
[Network | Docker] Dockerfile (0) | 2024.07.05 |
[Network | Docker] 이미지 (0) | 2024.07.04 |
[Network | Docker] 네트워크 (0) | 2024.07.03 |
[Network | Docker] 데이터베이스 외부 원격 접속 (0) | 2024.07.03 |