docker-compose로 Tomcat과 MariaDB를 연동해 WEB-WAS-DB 3-Tier 아키텍처를 완성한다. 앞서 만든 WEB-WAS 연동 구성에 MariaDB 컨테이너를 추가하고, depends_on으로 서비스 의존성을 지정한 뒤 index.jsp에 JDBC 코드를 넣어 DB까지 연결한다. 사용한 버전은 Tomcat 10.1.17, MariaDB 11.2.2(latest) 컨테이너다.
시작하기 전에 WEB(NginX·Apache 등)과 WAS가 먼저 연동되어 있어야 한다. WEB-WAS 연동은 docker-compose로 NginX – Tomcat 연동에서 다뤘다.
연동에 사용할 컨테이너 정보
docker-compose.yml에 Tomcat과 MariaDB를 연동하는 부분을 추가한다. Tomcat에는 MariaDB에 대한 의존 관계를 지정한다.
| 항목 | 항목 이름 | 값 |
| 의존관계 | depends_on | mariadb000ex02 |

MariaDB 컨테이너 설정 정보는 다음과 같다.
| 항목 | 항목 이름 | 값 |
| 이미지 이름 | image | mariadb:latest |
| DB 관련 정보 | environment | |
| Mysql 컨테이너 이름 | services | mariadb000ex02 |
| MYSQL 데이터베이스 이름 | MYSQL_DATABASE | MyDB |
| MYSQL 사용자 | MYSQL_USER | korjsh |
| Mysql 비밀번호 | MYSQL_PASSWORD | 1234 |
| 포트 번호 설정 | ports | 3306:3306 |
| 연결 네트워크 | networks | network01 |
docker-compose.yml 파일 수정하기
기존 NginX-Tomcat 구성에 MariaDB 컨테이너를 추가하고, Tomcat에 depends_on을 넣는다.
version: '3'
services:
nginx000ex02:
image: nginx:latest
volumes:
- C:Users정순호Documents3tier-foldernginx.conf:/etc/nginx/nginx.conf
ports:
- "80:80"
networks:
- network02
tomcat000ex02:
image: tomcat:latest
volumes:
- C:Users정순호Documents3tier-folderwebappsindex.jsp:/usr/local/tomcat/webapps/ROOT/index.jsp
ports:
- "8080:8080"
networks:
- network02
depends_on:
- mariadb000ex02
mariadb000ex02:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: my3tier000db
MYSQL_USER: korjsh
MYSQL_PASSWORD: dbpassword
ports:
- "3306:3306"
networks:
- network02
networks:
network02:
index.jsp에 JDBC 코드 작성
depends_on으로 서비스 간 의존성을 지정했으면, index.jsp에 JDBC 코드를 삽입해 MariaDB와 연동한다. 여기서는 DB 컨테이너는 생성하되 테이블은 만들지 않으므로, 테이블이 없는 경우를 대비한 예외 처리를 넣었다.
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>WEB-WAS 연동 성공</title>
</head>
<body>
<h1>WEB-WAS 연동 성공</h1>
<p>이 페이지는 엔진엑스와 톰캣, MariaDB가 성공적으로 연동되었습니다.</p>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String jdbcUrl = "jdbc:mysql://mariadb000ex02:3306/my3tier000db";
String username = "korjsh";
String password = "dbpassword";
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
Statement stmt = conn.createStatement();
try {
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table_name");
while (rs.next()) {
// Do something with the data from the database
}
rs.close();
// 예외처리: 테이블이 없을 경우의 동작
} catch (SQLException e) {
e.printStackTrace();
}
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
작성을 마쳤으면 docker-compose 파일을 다시 실행한다.
docker-compose -f pathofdocker-compose.yml up

정리
이렇게 docker-compose로 WEB-WAS-DB까지 연동하는 3-Tier 아키텍처를 이전보다 간편하게 구축했다. 핵심은 ① MariaDB 컨테이너를 같은 네트워크에 추가하고, ② Tomcat에 depends_on으로 의존 관계를 지정하며, ③ index.jsp의 JDBC URL 호스트를 MariaDB 컨테이너 이름으로 지정하는 것이다. 같은 3-Tier 구성을 쿠버네티스로 옮기는 방법은 쿠버네티스로 WAS-DB 연동 및 3-Tier 완성에서 이어진다.



💬 댓글 0