도커로 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

내려받은 커넥터를 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 컨테이너를 생성한다. 컨테이너 생성 정보는 다음과 같다.
| 항목 | 항목 이름 | 값 |
| 이미지 이름 | image | mariadb:latest |
| DB 관련 정보 | environment | |
| Mysql 컨테이너 이름 | services | mariadb-container |
| MYSQL 데이터베이스 이름 | MYSQL_DATABASE | MyDB |
| MYSQL 사용자 | MYSQL_USER | korjsh |
| Mysql 루트 비밀번호 | MYSQL_ROOT_PASSWORD | 1234 |
| Mysql 비밀번호 | MYSQL_PASSWORD | 1234 |
| 포트 번호 설정 | ports | 3306:3306 |
| 연결 네트워크 | networks | network01 |
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 연동이 완료된 것이다.

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



💬 댓글 0