Programming > Docker

[Tomcat] Dockerfile 로 설치하기

 

TEST-1) 톰캣이미지를 사용해 컨테이너생성

※ 필요시 톰캣의 이미지 태그를 수정해 원하는 버전선택 (ex: tomcat:9.0)

docker run -d -p 8080:8080 --name mytom tomcat

디폴트 index.jsp 파일을 생성해 체크를 원한면 간단하게 추

docker exec mytom mkdir -p /usr/local/tomcat/webapps/ROOT
docker exec mytom /bin/sh -c "echo '<h3>was1</h3>' > /usr/local/tomcat/webapps/ROOT/index.jsp"

TEST-2) Host PC와 마운트할 배포 디렉토리를 사용

ⓐ 파일을 마운트

docker run -d -p 8080:8080 --name mc --rm --mount type=bind,source="D:/web/ROOT/index.jsp",target=/usr/local/tomcat/webapps/ROOT/index.jsp tomcat

docker run -d -p 8080:8080 --name mc --rm \
    --mount type=bind,source="D:/web/ROOT/index.jsp",target=/usr/local/tomcat/webapps/ROOT/index.jsp \
    tomcat

ⓑ 디렉토리를 마운트

docker run -d -p 8080:8080 --name mc --rm --mount type=bind,source="D:/web",target=/usr/local/tomcat/webapps tomcat


docker run -d -p 8080:8080 --name mc --rm \
    --mount type=bind,source="D:/web",target=/usr/local/tomcat/webapps \
    tomcat

TEST-3) Tomcat 과 JAVA 버전을 선택해 이미지 만들기

# OpenJDK 버전의 이미지를 사용한다.
FROM openjdk:23-jdk

# 여기서는 Tomcat 11 버전을 사용한다.
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

# 톰캣의 원하는 버전을 찾아 설치한다.
RUN curl -fSL https://archive.apache.org/dist/tomcat/tomcat-11/v11.0.0/bin//apache-tomcat-11.0.0.tar.gz -o tomcat.tar.gz \
    && tar -xvf tomcat.tar.gz --strip-components=1 \
    && rm tomcat.tar.gz

# default port
EXPOSE 8080

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

도커파일을 build해 이미지를 생성한다.

docker build -t tomcat11-java23 .

 


 

1) Dockerfile 만들기

※  $ vi Dockerfile

설치할려는 tomcat버전은 바뀔수가 있으므로 tomcat 홈페이지에서 검색해서 사용하면 된다.

※ 내역

/usr/local/tomcat/webapps/ROOT 볼륨을 만들어 여기에 배포하면 Context root가 된다.

 

FROM ubuntu:latest

RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install openjdk-8-jdk wget
RUN mkdir /usr/local/tomcat
RUN wget http://apache.tt.co.kr/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz -O /tmp/tomcat.tar.gz
RUN cd /tmp && tar xvfz tomcat.tar.gz
RUN cp -Rv /tmp/apache-tomcat-9.0.14/* /usr/local/tomcat/
RUN rm -rf /tmp/* && rm -rf /usr/local/tomcat/webapps/*

EXPOSE 8080

CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

 

2) 이미지 만들기 (From Dockerfile)

-t 는 이미지명을 사용할 경우, 뒤에 이름을 지정... 없으면 이미지ID로 구분할 수 있다.
맨뒤 점(.) 은 Dockerfile이 위치한 디렉토리 (현재 디렉토리라 점)

$ docker build -t imgtom:1 .

 

3) 만든 이미지로 tomcat 실행하기

ⓐ 로그 및 배포폴더를 볼륨으로 지정해 호스트에서 확인가능하게 설정

1) 로그 폴더

$ mkdir /tom/logs
 

2) 배포폴더

$ mkdir /tom/webapps

$ vi /tom/webapps/mc/index.html  << 대충 1개 파일 만들어 본다.

ⓑ 컨테이너를 실행한다.

$ docker run -it -d -p 8080:8080 -v /tom/logs:/usr/local/tomcat/logs -v /tom/webapps:/usr/local/tomcat/webapps --name nwtom imgtom:1

ⓒ 접속확인

http://192.168.99.100:8080/mc/index.html