ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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-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