도커

도커 3티어 연동

bo20cy 2024. 4. 12. 18:26

도커 3티어 구성

https://bo20cy.tistory.com/16
이전 블로그 참조

 

NGINX - Tomcat 연동

 

 

연동하기 전 내부 ip 확인

docker ps -a
docker inspect tomcat | grep IPAddress

 

 

reverse_proxy사용

 

리버스프록시를 사용하여 nginx접속시 tomcat으로 넘겨주겠습니다.

#nginx.conf

-------------------
    upstream tomcat { 
        server ##내부ip##:8080; #내부ip입력  
    } 
    server { 
    listen 80; 
    server_name localhost; 
        location / { 
            root /usr/share/nginx/html; 
            index index.html index.htm; 
            proxy_pass http://tomcat; 
    } 
}

 

포트는 8080으로 했으나 다른 것이면 바꾸시면 됩니다.


수정한 nginx.conf 파일 넣어주고 재시작해줍니다

docker cp nginx.conf nginxx:/etc/nginx/nginx.conf 
docker restart nginxx

 

 

Tomcat - MySQL 연동

https://bo20cy.tistory.com/13
이전 블로그 글 참조
방법 : mysqlconnector 연결하고 연결페이지를 넣어줍니다.

 

 

mysqlconnector를 받고 넣어 줍니다.

wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.2.0.tar.gz
tar -zxvf mysql-connector-j-8.2.0.tar.gz
docker cp mysql-connector-j-8.2.0/mysql-connector-j-8.2.0.jar tomcat:/usr/local/tomcat/lib/
docker restart tomcat

이러면 톰캣이 mysql에 접근할 수 있습니다.

 

 

MySQL 테이블 넣어주기

 

db에 접근합니다.

docker exec -it mysqll /bin/bash
mysql -u root -p

 

 

db에 접근하고 확인하기 위해 일단 더미값을 넣어 줍니다.

create database dokudb; 
use dokudb; 
create table dokutable(name varchar(10)); 
insert into dokutable value('bo20cy'); 
select * form dokutable;

 

빠져나가 줍니다.

 

 

MySQL 도 내부 ip 확인해 줍니다.

docker inspect mysqll | grep IPAddress

MySQL 연결 확인

 

  • 접속확인 페이지를 생성합니다.

#mysqldb.jsp

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=utf-8" %>
<%
         String DB_URL = "jdbc:mysql://172.17.0.3:3306/dokudb";
         String DB_USER = "root";
         String DB_PASSWORD= "1q2w3e4r";
         Connection conn;
         Statement stmt;

         try {
              Class.forName("com.mysql.jdbc.Driver");
              conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
              stmt = conn.createStatement();
              conn.close();
              out.println("MySQL Connection Success!");
         }
         catch(Exception e){
              out.println(e);
         }
%>

내용까지 확인하는 jsp파일

 

url, user, password값을 자신에 맞게 변경해주시면 됩니다. 

url줄은

내부 아이피 : 172.17.0.3

포트 : 3306

db네임: dokudb

 

연동이 되면 뜹니다.

 


mysqll.jsp

<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.sql.*" %>
<html>
    <head>
        <title>Member List</title>
    </head>
    <body>
        MEMBER Table Contents
        <table width="100%" border="1">
            <tr>
                <td>Name</td>
            </tr>
            <% 
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try { 
                Class.forName("com.mysql.jdbc.Driver");
                String jdbcDriver = "jdbc:mysql://172.17.0.3:3306/dokudb";
                String dbUser = "root";
                String dbPass = "1q2w3e4r";
                String query = "SELECT * FROM dokutable";

                conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
                stmt = conn.createStatement();
                rs = stmt.executeQuery(query);

                while (rs.next()) { 
            %>
            <tr> 
                <td><%= rs.getString("name") %></td>
            </tr> 
            <% 
                }
            } catch (ClassNotFoundException | SQLException ex) { 
                out.println(ex.getMessage());
                ex.printStackTrace();
            } finally { 
                if (rs != null) try { rs.close(); } catch (SQLException ex) {}
                if (stmt != null) try { stmt.close(); } catch (SQLException ex) {}
                if (conn != null) try { conn.close(); } catch (SQLException ex) {}
            } 
            %>
        </table>
    </body>
</html>

데이터 테이블과 내용까지 출력하는 jsp파일입니다.

 

url, user, password, query값을 자신에 맞게 변경해주시면 됩니다. 

url줄은

내부 아이피 : 172.17.0.3

포트 : 3306

db네임: dokudb

 

 

 

확인 완료!

 

 

 

 

 

 

참조 : https://prup.tistory.com/70#recentComments