Docker로 WAS-DB 연동

Docker로 WAS-DB 연동

목차

도커로 WAS(Tomcat)와 DB(MariaDB)를 연동해 3-Tier 아키텍처를 완성한다. 앞서 WEB-WAS를 연동했다면, 이번에는 WAS 컨테이너에 MariaDB Connector를 설치하고 JDBC로 데이터베이스에 접속해 WEB-WAS-DB가 한 흐름으로 이어지도록 만든다. 사용한 버전은 Tomcat 10.1.17, MariaDB 11.2.2 컨테이너다.

이번 글은 WEB-WAS 연동에 이어지는 단계다. 다루는 컨테이너 환경은 다음과 같다.

  • WAS: Tomcat 10.1.17 컨테이너
  • DB: MariaDB 11.2.2 컨테이너

도커 컨테이너에 MariaDB 커넥터 설치

WAS인 Tomcat이 MariaDB에 접속하려면 JDBC 드라이버, 즉 MariaDB Connector가 필요하다. 아래 사이트에서 적절한 버전을 선택하고 생성되는 링크로 jar 파일을 내려받는다.

https://mariadb.com/downloads/connectors/connectors-data-access/java8-connector

MariaDB Connector 다운로드 화면

내려받은 커넥터를 Tomcat 설치 디렉터리 아래의 lib 디렉터리에 복사한다.

https://dlm.mariadb.com/3700566/Connectors/java/connector-java-3.3.2/mariadb-java-client-3.3.2.jar
# jar 파일 복사
cp -arp mariadb-java-client-3.3.2.jar /usr/local/tomcat/lib

이어서 MariaDB 컨테이너를 생성한다. 컨테이너 생성 정보는 다음과 같다.

항목 항목 이름
이미지 이름imagemariadb:latest
DB 관련 정보environment
Mysql 컨테이너 이름servicesmariadb-container
MYSQL 데이터베이스 이름MYSQL_DATABASEMyDB
MYSQL 사용자MYSQL_USERkorjsh
Mysql 루트 비밀번호MYSQL_ROOT_PASSWORD1234
Mysql 비밀번호MYSQL_PASSWORD1234
포트 번호 설정ports3306:3306
연결 네트워크networksnetwork01
docker run -d --name mariadb-container -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=MyDB -e MYSQL_USER=jsoonho -e MYSQL_PASSWORD=1234 -p 3306:3306 --network=network01 mariadb:latest

DB 연동 확인

Tomcat 설치 경로 안의 webapps/ROOT/index.jsp 파일을 아래와 같이 수정한다. JDBC URL의 호스트는 MariaDB 컨테이너 이름(mariadb-container)으로 지정하면 같은 도커 네트워크 안에서 이름으로 접근할 수 있다.

<%-- index.jsp 내용 --%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body>

<%
Connection conn = null;
String url = "jdbc:mariadb://mariadb-container:3306/MyDB";
String id = "jsoonho";                                          // 접속을 위한 계정의 ID
String pw = "1234";                                             // 접속을 위한 계정의 암호
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(url, id, pw);
out.println("<h1>MariaDB DB 연결 성공</h1>");
%>
</body>

</html>

수정이 끝나면 각 컨테이너를 재시작한다.

docker container restart nginx000ex01
docker container restart tomcat000ex01
docker container restart mariadb-container

브라우저에서 접속해 “MariaDB DB 연결 성공” 메시지가 뜨면 WAS-DB 연동이 완료된 것이다.

Docker로 WEB-WAS-DB 3-Tier 연동 성공 화면

정리

이렇게 WAS 컨테이너에 MariaDB Connector를 설치하고 JDBC로 DB에 접속함으로써, 도커로 WEB-WAS-DB의 3-Tier 아키텍처를 완성했다. 같은 구성을 docker-compose 한 파일로 묶고 싶다면 docker-compose로 Tomcat-MariaDB 연동에서 더 간편한 방식을 확인할 수 있다.

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요