본문 바로가기
Docker

docker 이미지를 이용한 tomcat war 파일 deploy







기본적으로 docker hub 를 통하여 tomcat image를 확인 한 뒤 pull 한다.

# docker search tomcat
NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                     Apache Tomcat is an open source implementa...   1448      [OK]       
# docker pull tomcat       
latest: Pulling from tomcat
8ee7f64d0d9f: Pull complete
.. 생략..
70b2ded797df: Pull complete
Digest: sha256:15e0b943137b81f0111b4c4e6ce070ce34910f4eed55ebfaeb642afe72f14c75
Status: Downloaded newer image for tomcat:latest
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tomcat              latest              70b2ded797df        5 days ago          292.4 MB
해당 tomcat image 를 base 로 custom 한 image 를 생성 한다. 
생성 하기 위해서 Dockerfiler 을 생성 한다
[From : 기반이 되는 image load
COPY : host 의 파일을 guest 환경에 파일로 복사 : 테스트를 위하여 mysql 커넥터 파일을 lib 에 복사
EXPOSE : 외부로 노출될 포트 정의 ]

## vi Dockerfile
FROM       tomcat:latest
MAINTAINER ycy1766@gmail.com
COPY  mysql-connector-java-5.1.43.tar.gz /usr/local/tomcat/lib/
EXPOSE 8080

해당 Dockerfile 을 cy_tomcat_test 이라는 image 로 build 하여 image 를 확인 한다.

# docker build -t cy_tomcat_test .
Sending build context to Docker daemon 96.84 MB
Sending build context to Docker daemon
Step 0 : FROM tomcat:latest
---> 70b2ded797df
Step 1 : MAINTAINER ycy1766@gmail.com
---> Using cache
---> d343393159e2
Step 2 : COPY mysql-connector-java-5.1.43.tar.gz /usr/local/tomcat/lib/
---> 4c720471a671
Removing intermediate container 45f45821f60a
Step 3 : EXPOSE 8080
---> Running in 3accda8a7da0
---> 6bf09672df9d
Removing intermediate container 3accda8a7da0
Successfully built 6bf09672df9d
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
cy_tomcat_test      latest              6bf09672df9d        6 seconds ago       295.9 MB
tomcat              latest              70b2ded797df        5 days ago          292.4 MB


테스트를 위하여 아래와 같이 -d 옵션을 통하여 백그라운드로 cy_tomcat 이라는 컨테이너로 cy_tomcat_test 이미지로 run 한다.
docker 프록시를 통하여 외부에서 포워딩 할 수 있도록 -p 옵션으로 docker 포트 8080 포트를 호스트 포트 8812 포트로 포워딩 한다.

# docker run -d -i -t --name="cy_tomcat" -p 8812:8080 cy_tomcat_test
35796277a3c4f7fec8cc20b07bf350f422c6eb4a9e7b164c5922a985f1b2559a

docker ps 로 해당 컨테이너에 대한 프로세스 확인하고, exec 명령어를 /bin/bash 환경에서 들어갈 수 있도록 실행 한다.
(guest 컨테이너에 진입)
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
35796277a3c4        cy_tomcat_test      "catalina.sh run"   2 seconds ago       Up 1 seconds        0.0.0.0:8812->8080/tcp   cy_tomcat
# docker exec -i -t cy_tomcat /bin/bash
root@35796277a3c4:/usr/local/tomcat#


DockerFile 을 통하여 추가한 라이브러리가 제대로 복사 되었는지 확인 한다.
root@35796277a3c4:/usr/local/tomcat# ls -al lib/mysql-connector-java-5.1.43.tar.gz
-rw-r--r--. 1 root root 3462610 Aug 13 04:20 lib/mysql-connector-java-5.1.43.tar.gz
터미널에 나온후 war 파일 deploy 를 위해서 해당 컨테이너를 rm 을 통하여 삭제 한다.

# exit
exit
# docker stop cy_tomcat           
cy_tomcat
# docker rm cy_tomcat
cy_tomcat


war 파일 배포를  위하여 로컬의 /tmp/cyDockTest2.war 파일을 run 할때 -v 옵션을 통하여 webapps 디렉토리에 이동 한다 
(Dockerfiler 작성시 COPY를 통하여 이동 하여도 상관 없음)
# docker run -d -i -t --name="cy_tomcat" \
-p 8812:8080 \
-v /tmp/cyDockTest2.war:/usr/local/tomcat/webapps/cyDockTest2.war \
cy_tomcat_test
docker run -d -i -t --name="cy_tomcat" -p 8812:8080 cy_tomcat_test

docker 컨테이너가 정상인지 프로세스 확인 하며, 브라우저상에 정상적으로 페이지가 뜨는지 확인 한다.
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
3a92d8aa0cb1        cy_tomcat_test      "catalina.sh run"   4 seconds ago       Up 3 seconds        0.0.0.0:8812->8ㅇ080/tcp   cy_tomcat           
# docker exec -i -t cy_tomcat /bin/bash
root@06c985be1fe6:/usr/local/tomcat# ls -al webapps/
total 976
drwxr-x---.  8 root root    4096 Aug 15 05:50 .
drwxr-sr-x. 11 root staff   4096 Aug  9 21:59 ..
drwxr-x---.  3 root root    4096 Aug  9 21:58 ROOT
drwxr-x---.  5 root root    4096 Aug 15 05:50 cyDockTest2
-rw-r--r--.  1 root root  965304 Aug 15 05:48 cyDockTest2.war
drwxr-x---. 14 root root    4096 Aug  9 21:58 docs
drwxr-x---.  6 root root    4096 Aug  9 21:58 examples
drwxr-x---.  5 root root    4096 Aug  9 21:58 host-manager
drwxr-x---.  5 root root    4096 Aug  9 21:58 manager







반응형