우선 WEB(NginX나 Apache등)과 WAS가 연동되어있어야 한다.
MariaDB : 11.2.2 버전(latest)
Tomcat : 10.1.17 버전(latest)
https://img.nuschool.co.kr/docker%eb%a1%9c-web-was%ec%97%b0%eb%8f%99
docker-compose.yml 파일에 Tomcat과 MariaDB를 연동하는 부분을 추가해주자
Tomcat 추가 설정 정보
항목 | 항목 이름 | 값 |
의존관계 | 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 파일 수정 하기
version: '3'
services:
nginx000ex02:
image: nginx:latest
volumes:
- C:\Users\정순호\Documents\3tier-folder\nginx.conf:/etc/nginx/nginx.conf
ports:
- "80:80"
networks:
- network02
tomcat000ex02:
image: tomcat:latest
volumes:
- C:\Users\정순호\Documents\3tier-folder\webapps\index.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:
depends_on을 사용하여 서비스 간의 의존성을 지정한 후에는 index.jsp에 JDBC 코드를 삽입하여 MariaDB와 연동할 수 있다.
필자는 그에 따라서 간단한 예제를 작성했다.
여기서 필자는 DB 컨테이너는 생성했지만 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 -f path\of\docker-compose.yml up

이렇게 해서 WEB-WAS-DB까지 연동하는 아키텍쳐를 도커 컴포즈를 통해 이전보다 더 간편하게 구축하는 법을 알아보았다.