웹프로그래밍/Docker , CI&CD

AWS EC2 우분투에서 Docker 톰캣8.5 설치 및 세팅

Gamcho 2019. 1. 11. 17:08

개요


개발환경: 

윈도우, 이클립스(STS), GIT


배포환경: 

AWS EC2(우분투), Docker, Jenkins, GIT


설명: 

AWS EC2 리눅스 우분투 환경에서 Docker를 설치하고 톰캣, 젠킨스 컨테이너를 생성하여 자동배포 환경을 구성했습니다.

이 포스팅에서는 톰캣 설치 및 세팅 과정을 기록했습니다.



참고

docker-tomcat-85-설치-및-war-적재-후-실행

docker-tomcat-install

톰캣_설정과_배포



설치



이미지 다운로드

docker pull tomcat



컨테이너 실행

tomcat-set1 이미지로 tomcat8 이라는 컨테이너를 실행(생성)한다.

docker run --name tomcat8 -i -t -d -p 8088:8080 tomcat-set1

->호스트OS의 웹브라우저에서 localhost:8088으로 접근


-v 플래그로 호스트OS의 home/ubuntu/upload/images/ 디렉토리를 컨테이너 OS의 /upload/images/ 디렉토리에 마운트한다.

 docker run --name tomcat8 -v $PWD/upload/images/:/upload/images/  -i -t -d -p 80:8080 tomcat-set1

$PWD는 upload 디렉토리의 절대경로를 반환하는 환경 변수


-d : detached mode, Run container in background and print container ID 

-i, -t : 스택오버플로우_답변

-p: port 설정




톰캣 컨테이너에 유닉스셀 실행

docker exec -u 0 -it tomcat8 bash



텍스트 편집기 설치

apt-get update

apt-get install nano





컨테이너 관리



모든 컨테이너 목록

docker ps -a



실행 중인 컨테이너 목록

docker container ls



컨테이너 이름 변경

docker rename 변경전이름 변경후이름(tomcat8)




컨테이너 삭제

docker container rm 컨테이너이름



설정




tomcat-users.xml에서 톰캣 관리자 설정

톰캣 관리자 권한이 있는 계정으로 직접 수동 배포하거나 젠킨스 자동 배포 설정시 필요합니다.

nano usr/local/tomcat/conf/context.xml


-tomcat-users.xml

<role rolename="tomcat"/>

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager-gui"/>

<role rolename="manager-jmx"/>

<role rolename="manager-script"/>

<role rolename="manager-status"/>

<role rolename="role1"/>

<user username="tomcat" password="<must-be-changed>" roles="tomcat,manager-gui,manager-jmx,manager-script,manager-status"/>

<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>

<user username="role1" password="<must-be-changed>" roles="role1"/>







context.xml에서 톰캣 접근가능 ip 설정

주석처리 하거나 IP를 입력합니다.


nano usr/local/tomcat/webapps/manager/META-INF/context.xml

nano usr/local/tomcat/webapps/host-manager/META-INF/context.xml


-context.xml 

<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"

         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->





업로드 사이즈 제한 설정 변경

웹 어플리케이션 용량이 사이즈 제한을 초과하면 SizeLimitExceededException이 발생합니다.


 nano usr/local/tomcat/webapps/manager/WEB-INF/web.xml


  <multipart-config>
      <!-- 50MB max -->
      <max-file-size>524288000</max-file-size>
      <max-request-size>524288000</max-request-size>
      <file-size-threshold>0</file-size-threshold>
  </multipart-config>




업로드 이미지용 외부 폴더 설정

docBase에는 톰캣을 구동중인 컨테이너의 OS에서 별도로 생성한 upload 폴더의 경로가 들어간다.

위에서 run -v 플래그로 경로를 맵핑해주었습니다.


nano usr/local/tomcat/conf/server.xml


<Context docBase="/upload/images/" path="/ModuHome/images/" reloadable="true"/>






JNDI DB 접속 정보 설정

DB 접속 정보를 웹 어플리케이션 안에 저장하지 않고 톰캣 server.xml에 저장한다.


nano usr/local/tomcat/conf/context.xml


 <ResourceLink name="jdbc/myDB"

                global="jdbc/globalDB"

                auth="Container"

                type="javax.sql.DataSource" />


웹 어플리케이션의 web.xml에 아래 내용을 추가해서 jdbc/myDB로 연결한다.

<web-app>


<resource-ref>

<description>OracleDB</description>

<res-ref-name>jdbc/myDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>


</web-app>



DB 접속 정보 작성↓


nano usr/local/tomcat/conf/server.xml 


<Resource name="jdbc/globalDB"

  global="jdbc/globalDB"

  auth="Container"

  type="javax.sql.DataSource"

  driverClassName="oracle.jdbc.driver.OracleDriver"

  url="jdbc:oracle:thin:@url:1521:ORCL"

  username="id"

  password="password"/>

driverClassName, username, password, url을 <GlobalNamingResources> 사이에 작성





마무리




재시작해서 톰캣 설정 적용

docker container restart tomcat8



기본설정 끝낸 톰캣 컨테이너 이미지화

설정을 마친 톰캣 컨테이너를 이미지로 저장해서 필요할때 다시 사용할 수 있다.

docker commit 현재컨테이너이름 이미지이름



도커 이미지 목록
docker images