티스토리 뷰
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/
웹사이트를 복사하고 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 페이지가 보입니다.
- 끝 -
'개발환경 > K8S·Docker' 카테고리의 다른 글
[Docker] 4. Docker 우분투 컨테이너에서 작업 후 이미지 제작하기 (0) | 2023.02.26 |
---|---|
[Docker] 3. Docker 컨테이너 생성/구동/중지/삭제 명령어 익히기 (0) | 2023.02.25 |
[Docker] 2. Docker registry에서 이미지 다운받아 컨테이너 생성 및 구동하기 (0) | 2023.02.23 |
[Docker] 1. Ubuntu에 Docker 설치하기 (0) | 2023.02.22 |
[docker compose] 도커 컨테이너 timezone 설정하기 (0) | 2022.04.11 |