우선 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_onmariadb000ex02

MariaDB 설정 정보

항목 항목 이름
이미지 이름imagemariadb:latest
DB 관련 정보environment
Mysql 컨테이너 이름servicesmariadb000ex02
MYSQL 데이터베이스 이름MYSQL_DATABASEMyDB
MYSQL 사용자MYSQL_USERkorjsh
Mysql 비밀번호MYSQL_PASSWORD1234
포트 번호 설정ports3306:3306
연결 네트워크networksnetwork01

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
docker-compose로 연동완료 화면

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

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다