-
AWS EC2 우분투에서 Docker 톰캣8.5 설치 및 세팅웹프로그래밍/Docker , CI&CD 2019. 1. 11. 17:08
개요
개발환경:
윈도우, 이클립스(STS), GIT
배포환경:
AWS EC2(우분투), Docker, Jenkins, GIT
설명:
AWS EC2 리눅스 우분투 환경에서 Docker를 설치하고 톰캣, 젠킨스 컨테이너를 생성하여 자동배포 환경을 구성했습니다.
이 포스팅에서는 톰캣 설치 및 세팅 과정을 기록했습니다.
참고
docker-tomcat-85-설치-및-war-적재-후-실행
설치
이미지 다운로드
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
-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'웹프로그래밍 > Docker , CI&CD' 카테고리의 다른 글
Docker - 톰캣 오류로 인한 실행불가 상태에서 컨테이너 수정하기 (0) 2019.01.13 Failed to deploy - 젠킨스 톰캣 서버 배포 중 err_connection_reset (0) 2019.01.10 젠킨스 빌드 도중 Cannot run program "mvn" error=2, No such file or directory (0) 2019.01.10 Docker 가상환경에서 스프링 maven프로젝트 jenkins/tomcat 자동배포 구성 (2) 2019.01.07 윈도우에서 Docker 시작하기 (0) 2019.01.05