WAS - DB connect ( feat. docker )
Docker 컨테이너를 활용한 3-Tier Architecture 구성
WS - WAS - DB 연결 - (3) WAS - DB Connecting
기본적으로 도커 컨테이너를 실행시키고, 도커 컨테이너 쉘 bash로 작업한다.
-
WAS(Tomcat) - DB(MariaDB) 연결
-
MariaDB 테스트테이블 생성
- 데이터베이스 이름: mydb
- 테이블 이름: users
- 테이블 칼럼: id, username, email
-
연결을 위한 JDBC(자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스) 설치
- 다운로드 명령어
wget https://dlm.mariadb.com/2896635/Connectors/java/connector-java-2.7.9/mariadb-java-client-2.7.9.jar
- 설치 경로: tomcat/lib 예시) root@3a324624253c:/usr/local/tomcat/lib#
- 기본적으로 Docker 컨테이너에서는 관리자 권한이 없기 때문에 타 디렉터리에서 설치 후 cp명령 혹은 mv명령어로 이동을 시도할 수 없으므로 Dockerfile 수정을 이용해야 하는데, 번거로우므로 경로에 이동 후 설치하는 과정을 가졌다.
-
MariaDB 주소 확인
-
주소 확인 명령어
docker inspect mariadb
"IPAddress": "172.17.0.2", 부분에서 ip를 확인한다.
-
-
Tomcat서버에서 받아오기위한 시작페이지를 수정한다.
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import = "java.sql.*" %> <html> <head> <title>Users Table</title> <style> table, th, td { border: 1px solid black; border-collapse: collapse; padding: 10px; } </style> </head> <body> <% Connection conn = null; Statement stmt = null; ResultSet rs = null; try { String url = "jdbc:mysql://172.17.0.2:3306/mydb"; // 명령어를 통해 확인한 mariadb 주소 String id = "root"; // 접속을 위한 계정의 ID String pw = "qwer1234!"; // 접속을 위한 계정의 암호 Class.forName("org.mariadb.jdbc.Driver"); conn = DriverManager.getConnection(url, id, pw); out.println("<h1>MariaDB DB 연결 성공</h1>"); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT id, username, email FROM users"); out.println("<table>"); out.println("<tr><th>ID</th><th>Username</th><th>Email</th></tr>"); while (rs.next()) { int userId = rs.getInt("id"); String username = rs.getString("username"); String email = rs.getString("email"); out.println("<tr><td>" + userId + "</td><td>" + username + "</td><td>" + email + "</td></tr>"); } out.println("</table>"); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException se) { se.printStackTrace(); } } %> </body> </html>
-
localhost:8080으로 접속해서 확인한다.
실행화면
-