Sangil's blog

https://github.com/ChoiSangIl Admin

Docker tomcat(톰캣) war파일 배포하기 DEV / DOCKER

2019-08-12 posted by sang12


도커를 이용하여 아주 간단하게 WAR파일을 배포 하는 방법을 알아보겠습니다.

* 실제 서비스에서는 dockerfile로 이미지를 만들고 docker-compose와 jenkins, git 등을 사용하여 deploy하지만, 이번 포스팅에서는 도커 컨테이너를 올리고 해당 컨테이너에 WAR파일을 가져와서 이미지를 COMMIT하여 TOMCAT에 서비스하는 작업을 하겠습니다.

일단 준비물로는 배포해야 할 웹서비스 WAR파일이 필요합니다. (SPRING BOOT를 이용하여 간단하게 WAR파일을 생성합니다. 이번 포스팅에서는 해당 부분은 제외합니다)

 

$ docker run -d -it -p 8080:8080 --name blog_tomcat tomcat:8tomcat 8이미지를 포트 8080으로 시작. 해당 이미지가 없으면 존재하지 않으면 다운 받습니다.


그리고 docker ps명령어를 치면 tomcat이 올라가 있는 것을 확인 할 수 있습니다. 저는 war파일에서 db를 바라보기 있기 때문에 db도 미리 올려놨습니다.

그리고 tomcat이 정상적으로 올라간 것을 확인 하기 위해 http://sang12.iptime.org:8080/ 또는 도매인 설정이 안되어 있는경우http://localhost:8080/ 로 접속해보면 귀여운 고양이가 한마리 반겨주는 것을 볼 수 있습니다.

이제 저희가 준비한 war파일을 컨테이너에 복사해줍니다.

# war파일 복사
$ docker cp ./ROOT.war blog_tomcat:/usr/local/tomcat/webapps
# bash shall 접속
$ docker exec -it blog_tomcat bash

-war파일 복사

-bash shall war파일 확인

WAR파일이 잘 복사된 걸 확인 했나요? 저는 이때 실수한게, 해당 컨테이너 안에서 /usr/local/tomcat/bin 폴더에서 shutdown.sh로 톰캣을 내리고 startup.sh로 올릴려고 했더니 container가 죽었습니다. 
그래서 원인을 찾아보니 해당 컨테이너 변경한 IMAGE로 만들어주고 재시작을 해야 제가 WAR를 복사한 이미지 상태로 톰캣이 올라가는 것이였습니다. 그랬습니다.. :)

# docker commit (현재 컨테이너를 이미지화 하기)
$ docker commit -a sangil.choi blog_tomcat sang12_tomcat
# 도커 이미지 조회
$ docker images

docker commit으로 현재 container를 이미지로 만들고 docker images명령어를 사용하여 조회해보면 새로운 sang12_tomcat이란 이미지가 생성된 것을 확인 할 수 있습니다. (dockerfile을 이용하여 새로운 image를 생성 할 수도 있음!)

그리고 아까 올려뒀던 tomcat 컨테이너를 재시작 해줍니다.

#container 재시작
$ docker restart blog_tmcoat
다시 http://localhost:8080으로 접속하면 배포했던 서비스가 올라간 것을 확인 할 수 있습니다.

지금까지 기초적인 방법으로 tomcat에 war파일을 배포해봤습니다. 하지만 배포할때마다 해당 과정을 반복하는 것은 매우 불편할 것 입니다. 그래서 dockerfile이나 docker-compose git jenkins등을 이용하여 배포를 더욱 쉽게하고 자동화 할 수 있습니다 ^^. 

-Dockerfile을 이용한 Tomcat War파일 배포
-Jenkins, Docker, Github를 이용하여 WAR 자동 배포하기

#docker tomcat war #docker tomcat war 배포하기 #docker war배포 #docker war deploy #docker war #docker tomcat #docker
REPLY