본문으로 건너뛰기

Docker로 Tomcat 실행해보기

 · reading-time-plural · 

Docker를 이용해 빠르게 tomcat web server를 올려보도록 하겠습니다. 또한, 파일 마운트를 통해서 리소스가 바로 변하는 것을 확인할 수 있습니다.

Docker image 준비

Docker 컨테이너를 올리기 위해선 image가 필요합니다. image를 만들기 위해서 Dockerfile 을 작성하도록 하겠습니다.

Dockerfile 작성

먼저 파일 관리하기 용이하도록 호스트 PC에 example 디렉토리를 만든 후 내부에 Dockerfile 을 작성하도록 하겠습니다.

Dockerfile을 아래와 같이 작성합니다.

Dockerfile
# 어떤 이미지를 사용할 것인가
FROM tomcat

# cmd 실행
RUN apt-get update

# [tomcat 데몬이 실행되고 나면 죽어버리는 것을 방지하기 위함](https://skaqud.github.io/2016/08/21/Build-Docker-Container/)
CMD ["catalina.sh","run"]

이미지 생성

아래 명령어를 통해 작성한 Dockerfile 를 이미지로 생성합니다.

docker build -t tomcat-test:practice .
caution

Dockerfile 이 존재하는 경로에서 실행되어야합니다.

이미지가 생성된 것을 확인할 수 있습니다.

컨테이너 실행

이제 생성된 이미지를 이용하여 컨테이너를 실행할 것입니다. 아래의 명령어를 입력합니다.

docker run -p 8888:8080 tomcat-test:practice

실제로 tomcat만 실행시 컨테이너 내부의 webapps 에는 리소스파일이 없습니다.

때문에 404를 출력하게 됩니다.

파일 마운트 컨테이너 실행

이번에는 이를 방지하기 위해 호스트의 파일을 자동으로 Docker 컨테이너로 보내줄 수 있도록 파일 마운트를 해보도록 하겠습니다.

호스트PC에 리소스 생성

먼저 컨테이너로 전송할 리소스가 필요합니다. 이전에 만들어둔 exampleresources 디렉토리를 추가하겠습니다.

이후 resources 디렉토리에 index.html 를 생성하고 아래와 같이 작성하도록 합니다.

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
Hello, Tomcat!
</body>
</html>

실행

이전에 실행한 컨테이너를 제거하고 아래의 명령어로 컨테이너를 실행합니다.

docker run -p 8888:8080 -v C:\Users\ruddms936\Desktop\example\resources:/usr/local/tomcat/webapps/ROOT tomcat-test:practice
info

컨테이너 내부에 ROOT디렉토리가 없더라도 자동으로 생성됩니다.

정상적으로 동작하는 것을 확인할 수 있습니다.


parkgang
태그 🏷