Application Modernization/Container & PaaS

Docker로 Tomcat 실행

Cloud Applicaiton Architect 2021. 9. 14. 08:02
반응형

이 글은 2018년 네이버에 포스팅했던 글을 Tistory로 리포스팅한 글입니다.

 

 

docker에 대한 간단한 개념과 명령어를 알아 보았다면 이번에는 미리 만들어진 Tomcat8 도커 이미지를 이용해 간단한 웹 초기 화면을 웹 브라우저에서 호출해 보도록 하겠습니다. 이번 실습에 사용될 웹어플리케이션의 컨텍스트 이름은 ROOT이며 디렉토리 및 파일의 구조는 다음과 같습니다.

C:\webapps\ROOT
│ index.jsp

└─WEB-INF
web.xml

 

실습에 사용될 어플리케이션은 아래의 링크에서 배포 파일 형태로 다운로드 받으실 수 있습니다. 배포 파일의 이름은 ROOT.war 파일 입니다.

http://sharplee7.blog.me/221464833661

또한 미리 만들어진 Tomcat8의 이미지는 다음과 같은 내부 구조를 가지고 있습니다.

tomcat@a75a6698326e:/opt/tomcat$ pwd
/opt/tomcat
tomcat@a75a6698326e:/opt/tomcat$ ls conf
Catalina catalina.properties logging.properties tomcat-users.xml
catalina.policy context.xml server.xml web.xml
tomcat@a75a6698326e:/opt/tomcat$ ls webapps
.
tomcat@a75a6698326e:/opt/tomcat$

 

실습에 사용할 tomcat8의 이미지는 아래의 웹 사이트에서 다운로드 받기 바라겠습니다.(물론 docker hub에서 pull 할 수 있지만 실습에 사용되는 이미지는 커스터마이즈 되어 있으며 load 명령어 사용법을 위해 여기에서는 별도로 다운로드 받기 바라겠습니다.)

https://drive.google.com/file/d/1Z69312AU9NDEEbzyoIgk2C71uLuopRBO/view?usp=sharing

 

실습 이해

tomcat의 기본 웹 어플리케이션이 배포되는 환경은 $TOMCAT_HOME/webapps 입니다. 이번 실습에서는 컨테이너 내부의 이 webapps 디렉토리를 Volume Mount해서 Host computer인 윈도우의 디렉토리와 disk share 하는 방식으로 어플리케이션(ROOT.war)을 배포 하도록 하겠습니다. 이를 다이어그램으로 표시하면 다음과 같은 형식이 될 것입니다.

 

Tomcat 8 이미지 로드(load)

https://drive.google.com/file/d/1Z69312AU9NDEEbzyoIgk2C71uLuopRBO/view?usp=sharing 에서 다운받은 tomcat8-3-image.zip 파일을 다음과 같이 Docker 이미지로 인식 시키도록 합니다.

  • docker load –i [image명] (도커 이미지 파일을 도커 로컬 레파지트로에 등록)
C:\Users\FKL>docker load -i tomcat8-3-image.zip
1ff32c20d887: Loading layer [==================================================>] 43.01kB/43.01kB
Loaded image: tomcat8-3-image:latest

 

ROOT.war 파일 복사

실습을 위해 윈도우의 C:\webapps라는 디렉토리를 다음과 같이 만들도록 합니다.

C:\webapps>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 985C-8D25
C:\webapps 디렉터리
2019-02-14 오후 01:42 <DIR> .
2019-02-14 오후 01:42 <DIR> ..
0개 파일 0 바이트
3개 디렉터리 100,774,674,432 바이트 남음

 

http://sharplee7.blog.me/221464833661 에서 다운받은 ROOT.war 파일을 방금 만든 C:\webapps에 복사해 둡니다.

C:\webapps>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 985C-8D25
C:\webapps 디렉터리
2019-02-14 오후 01:58 <DIR> .
2019-02-14 오후 01:58 <DIR> ..
2019-02-14 오후 01:56 1,128 ROOT.war
1개 파일 1,128 바이트
2개 디렉터리 100,769,656,832 바이트 남음
C:\webapps>

 

 

Tomcat 8 container 등록 및 C:\webapps volume mount

docker run [옵션] -v [호스트 드라이브 경로]:[컨테이너 내부 디렉토리 경로] [실행할 이미지명] (HOST의 디렉토리를 Container내부의 디렉토리로 바인딩 시킵니다.)

 

* 실제 입력한 명령어:

docker run -d -i -t -p 8083:8080 --name tomcat8-3 -v c:/webapps:/opt/tomcat/webapps tomcat8-3-img

 

실행된 로그 확인

C C:\Users\FKL>docker logs tomcat8-3
Checking *.war in /webapps
Checking tomcat extended libs *.jar in /libs
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_PID: /opt/tomcat/temp/tomcat.pid
14-Feb-2019 05:04:24.119 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
14-Feb-2019 05:04:24.203 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
14-Feb-2019 05:04:24.214 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1964 ms
14-Feb-2019 05:04:24.337 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
14-Feb-2019 05:04:24.342 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.11
14-Feb-2019 05:04:24.439 INFO [localhost-startStop-1] deployWAR Deploying web application archive /opt/tomcat/webapps/ROOT.war
14-Feb-2019 05:04:25.582 INFO [localhost-startStop-1] deployWAR Deployment of web application archive /opt/tomcat/webapps/ROOT.war has finished in 1,141 ms
14-Feb-2019 05:04:25.618 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
14-Feb-2019 05:04:25.628 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
14-Feb-2019 05:04:25.631 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1415 ms
C:\Users\FKL

 

이렇게 실행된 컨테이너는 웹브라우저를 통해 확인 할 수 있습니다.(http://localhost:8083/)

 

또한 docker container 내부로 로그인해서 ROOT.war 파일이 webapps 디렉토리 내부에 복사되어 있는 것을 확인 할 수 있습니다.

C:\webapps>docker exec -ti tomcat8-3 /bin/bash
tomcat@a75a6698326e:/opt/tomcat$ cd webapps
tomcat@a75a6698326e:/opt/tomcat/webapps$ ls
ROOT ROOT.war
tomcat@a75a6698326e:/opt/tomcat/webapps$

 

이번 회는 여기까지 알아 보겠습니다.

감사합니다.

 

반응형

'Application Modernization > Container & PaaS' 카테고리의 다른 글

Docker Private Container Registry 만들기  (0) 2021.09.29
자주쓰는 Dockerfile 명령어  (0) 2021.09.14
Dockerfile 로 docker image 작성  (0) 2021.09.14
Docker로 Tomcat MySQL 실행  (0) 2021.09.14
Docker 개념  (0) 2021.09.07