티스토리 뷰

728x90
반응형

Docker + Apache Tomcat + JSP

이번 포스팅은 Docker 로 Apache Tomcat 기반의 JSP 웹사이트를 쉽고 빠르게 디플로이하는 방법에 대해서 다룹니다.

 

저는 웹사이트 구축을 위한 것이 아니라 개인적으로 여러가지 테스트를 해보기 위해서 빠른 구축이 필요하게 되어서 이와 같은 환경으로 구성하게 되었습니다.

 

디렉토리 구조(Directory Structure)

우선 도커 빌드하기 전 아래와 같은 디렉터리 구조를 만들어줍니다.

domdomjsp/
    Dockerfile
    webapp/
        WEB-INF/
          classes/
          lib/
          web.xml
        index.jsp

domdomjsp는 임의의 프로젝트 폴더 이름입니다. 지금 현 상태로는 폴더 모두 빈 상태이고 파일 내용도 없는 단순히 도커의 뼈대만 만들어줍니다.

 

웹 애플리케이션 작성(Web Application)

먼저 JSP 웹 애플리케이션이 정상작동하기 위해서 필수 파일 몇 개만 내용을 작성해줍니다.

 

domdomjsp/webapp/WEB-INF/web.xml

<web-app>
</web-app>

그냥 빈 파일이어도 되는데, 나중에 필요할 때 수정하면 됩니다.

 

domdomjsp/webapp/index.jsp

<!doctype html>
<h1>It works!</h1>
<%
  for (int i = 0; i < 5; ++i) {
      out.println("<p>Hello, world!</p>");
  }
%>

위 내용은 그냥 샘플 내용입니다. 임시로 JSP 구문이 잘 동작하는지 확인할 수 있는 정도면 됩니다.

 

도커 파일 작성(Dockerfile)

이제 Dockerfile 을 작성해봅니다. 생성한 Dockerfile에 아래와 같은 내용을 입력해줍니다.

FROM tomcat:9.0.1-jre8-alpine

ADD ./webapp /usr/local/tomcat/webapps/webapp

CMD ["catalina.sh", "run"]

작성한 항목에 대해 간단히 설명하자면 이렇습니다.

 

Apache Tomcat Image

FROM tomcat:9.0.1-jre8-alpine

기본 뼈대 이미지로 공식 tomcat:9.0.1-jre8-alpine 이미지를 사용합니다. tomcat 버전을 다르게 하거나 도커 허브에 있는 다른 tomcat 도커 이미지를 사용하여도 무방합니다.

참고 사이트 : https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

웹사이트를 복사하고 Tomcat을 시작하기

ADD ./webapp /usr/local/tomcat/webapps/webapp

ADD 명령은 로컬 파일(예를 들어 domdomjsp/webapp 폴더)들을 컨테이너에 있는 경로(/usr/local/tomcat/webapps/webapp)에 복사합니다.

CMD ["catalina.sh", "run"]

마지막으로 CMD 명령어로 Apache Tomcat 을 실행하도록 하고 지금까지 만든 JSP 웹 애플리케이션 서버를 동작하도록 만듭니다.

 

도커 이미지 빌드와 실행(Build Docker Image and Run)

Dockerfile 이 있는 경로인 domdomjsp/ 디렉토리로 이동합니다. 그런 다음 아래 명령어를 실행해서 Docker 이미지를 빌드합니다.

$ sudo docker build -t domdomapp .

그런 다음에 실행해줍니다.

$ docker run --rm -it -p 8888:8080 domdomapp

tomcat은 기본값으로 8080포트로 열리고, 우리는 외부 포트로 8888로 지정해주었습니다. 일회성으로 실행하고 종료할 때 컨테이너도 같이 제거해줄 수 있도록 --rm 옵션을 붙여주었습니다.

 

이제 http://localhost:8888/webapp/ 에 접속해보면 아래와 같이 JSP 웹페이지가 보입니다.

그리고 그냥 http://localhost:8888 로 접속하게 되면 tomcat index 페이지가 보입니다.

 

 

- 끝 -

728x90
반응형
댓글