도커
도커 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
확인 완료!