[Docker] Tomcat 사용해보기 (포트포워딩, 설정, 이미지 커밋, 마운트)

|

전에 쓴 글대로 Tomcat을 실행하면 외부에서 접속이 안된다.

 

포트포워딩을 해야 동작이된다.

 

실행시 -p 옵션을 줘서 동작이 가능하다.

 

-p {내부포트}:{외부포트}

 

] docker run -p 8080:8080 -it tomcat:9-jdk8

] docker ps

 

이미 동작중인 컨테이너에게 포트포워딩을 하기 위해서는 Swarm 모드를 이용해서 서비스를 업데이트 하면 된다고 하는데 모르겠다.

 

브라우저로 http://localhost:8080 에 접속하면 404가 뜨는 것을 확인할 수 있다.

 

404가 뜨는 이유는 webapps이 비어있기 때문인데 아래와 같이 확인이 가능하다.

 

] docker exec -it {container id} bash

] cd /usr/local/tomcat/webapp

] ls

비어있다.

 

그런데 보통 Tomcat을 사용할때 server.xml 을 수정하여 사용하는 편인데 수정은 다음과 같이 한다.

 

 1. bash로 접속

 2. vi 편집기로 수정 

 3. catalina.sh 재시작

 

1. bash로 접속

] docker exec -it {container id} bash

 

2. vi 편집기로 수정

vi가 없다

Ubuntu 기반이다

 

apt-get을 이용해서 설치해준다.

 

vi보다는 vim이 편해서 vim으로 설치했다.

 

] apt-get update && apt-get install -y vim

 

 

잘 열린다.

 

필요한 사항들을 수정 후 저장한다.

 

3. catalina.sh 재시작

/bin/shutdown.sh 실행하면 docker 프로세스가 죽어서 그런지 꺼진다

]docker container start {container id}

 

현재 설정을 수정한 대상은 "실행 중인 컨테이너"로 기존 이미지를 가지고 컨테이너를 실행할 경우 당연히 저장되어 있지 않다.

 

따라서 해당 설정 작업을 이미지에 적용하기 위해서는 PowerShell을 통해서 commit을 해줘야 한다.

]docker commit {container id} {image name}:{tag} 

 

 

별도로 관리하려면 tag를 다르게 저장해줘도 된다.

 

따라서 Tomcat쪽에 기본 작업이 필요하면 시작시 bash를 커맨드로 줘서 사전에 작업 후 저장해놓고 쓰는게 편하다.

 

작업 할때 PowerShell 창을 하나 더 띄워서 컨테이너 아이디를 확인해서 작업하면 편해진다.

 

여기까지 진행하면 원하는 설정이 적용된 Tomcat을 사용할 수 있다.

 

필자는 스트리밍 서비스와 DB를 추가적으로 동작시키고 또 개발한 소스를 해당 Tomcat과 연동하여 동작시키려고 한다.

 

이때, 스트리밍 서비스를 위한 VOD 파일들과 개발한 소스, DB 등은 컨테이너와 별개로 유지가 되어야한다.

 

따라서 Window에 폴더를 하나 생성해서 마운트를 진행할 예정이다.

 

적당한 위치에 폴더를 하나 생성해준다.

 

] docker run -v {호스트 경로}:{컨테이너 경로} -it {image}:{tag} 

 

마운트 후 파일이 공유되는 것이 확인되었다.

 

 

And
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ··· | 101 | next