[Docker] Tomcat Oracle 12c 구성하기 2

gomguk.tistory.com/69

이전 게시글에서 생성한 컨테이너(tomcat, oracle 12c)를 docker compose를 이용하여 한번에 관리하도록 구성한다.

1. Tomcat Dockerfile

Docker Hub의 Tomcat 공식 이미지를 그대로 사용하기에는 추가적으로 설정이 필요한 것들이 몇가지 있다.

Dockerfile로 구성하여 이미지를 생성한다.

작성한 Dockerfile은 아래와 같다.

FROM tomcat:latest
MAINTAINER DHPark<rharnr777@gmail.com>

EXPOSE 8080

RUN ["rm", "/etc/localtime"]
RUN ["ln", "-sf", "/usr/share/zoneinfo/Asia/Seoul", "/etc/localtime"]

COPY setenv.sh /usr/local/tomcat/bin/
COPY OJDBC-Full /usr/local/tomcat/lib/

# jdbc:oracle:thin:@192.168.0.9:1521/MY_PDB.oracledb.my.local

한 줄씩 설명하면 다음과 같다.

FROM tomcat:latest

  • docker hub에서 tomcat 이미지 불러오기(local에 있다면 로컬의 이미지를 사용한다.)

MAINTAINER Dohyun, Park rharnr777@gmail.com

  • 작성자 명시(옵션)

EXPOSE 8080

  • 8080포트 오픈

RUN ["rm", "/etc/localtime"]

RUN ["ln", "-sf", "/usr/share/zoneinfo/Asia/Seoul", "/etc/localtime"]

  • localtime을 아시아/서울 지역으로 설정

COPY setenv.sh /usr/local/tomcat/bin/

  • 톰캣의 시간을 ORACLE DB와 맞추기 위해 localtime 설정(시스템 timezone과 별개)

COPY OJDBC-Full /usr/local/tomcat/lib/

  • OJDBC 드라이버 복사

# jdbc:oracle:thin:@192.168.0.9:1521/MY_PDB.oracledb.my.local

  • 톰캣에서 oracle db에 연결하기 위한 주소(주석)

추가 파일

setenv.sh 파일과 OJDBC 드라이버를 dockerfile과 같은 경로에 둔다.

1. setenv.sh

#!/bin/bash
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+9"

2. OJDBC 드라이버 다운로드 경로

www.oracle.com/database/technologies/jdbc-drivers-12c-downloads.html

파일 구조

준비가 되었다면 docker build -t [이미지명] . 으로 이미지를 빌드한다.

빌드가 완료되면 다음처럼 이미지가 생성된다. = mytomcat

cli 환경에서는 docker images 명령으로 확인할 수 있다.

Docker-compose

두 개의 이미지를 동시에 실행할 수 있는 docker-compose.yml를 작성한다.

version: '3'

services:
    oracle_server:
        container_name: oracle-db-compose
        image: 'store/oracle/database-enterprise:12.2.0.1-slim'
        ports:
          - "1521:1521"
        volumes:
          - /Users/gom/dockerdir:/ORCL
        environment:
          - DB_SID=MY_SID
          - DB_PDB=MY_PDB
          - DB_DOMAIN=oracledb.my.local
          - TZ=Asia/Seoul

    tomcat_server:
      container_name: mytomcat
      image: 'mytomcat'
      ports:
        - "8080:8080"
      volumes:
        - /Users/gom/dockercompose/tomcat:/usr/local/tomcat/webapps

oracle 부분은 앞선 포스팅에서 다루었으므로 자세하게 다루지 않는다.

작성 후 컨테이너를 실행시키면 다음과 같이 동작하는 것을 확인할 수 있다.

3. DB 연결 확인

ID: SYSTEM

PS: Oradoc_db1

입력 후 연결하면 연결에 성공한다.

 

JSP, Tomcat과의 연결도 잘 된다.

 

참고

 

1 . https://sightstudio.tistory.com/13

반응형