简体   繁体   English

使用jdbc驱动程序在docker容器中连接tomcat和mysql

[英]connect tomcat and mysql in docker container with jdbc driver

i'm learning docker and trying to put my java web application using tomcat and mysql to container. 我正在学习docker并尝试将使用tomcat和mysql的Java Web应用程序放入容器。 but i faced some problem and no solution to work properly to me. 但是我遇到了一些问题,没有办法让我正常工作。

Error message 错误信息 错误信息

My architecture 我的建筑 我的建筑

tomcat folder - docker file tomcat文件夹-docker文件

FROM tomcat:latest
RUN mkdir -p /usr/local/tomcat/webapps/test/
COPY ./mysql-connector-java-5.1.44-bin.jar /usr/local/tomcat/webapps/test
COPY ./db.jsp /usr/local/tomcat/webapps/test 
COPY ./web.xml /usr/local/tomcat/webapps/test
CMD ["catalina.sh", "run"]

tomcat folder - db.jsp Tomcat文件夹-db.jsp

<%@ page contentType = "text/html; charset=utf-8" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>

<html>
<head><title>회원 목록</title></head>
<body>

MEMBER 테이블의 내용
<table width="100%" border="1">
<tr>
    <td>이름</td><td>아이디</td><td>이메일</td>
</tr>
<%
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        String jdbcDriver = "jdbc:mysql://mysql1:8888";
        String dbUser = "..";
        String dbPass = "..";

        String query = "select * from test";

        conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);

        stmt = conn.createStatement();

        rs = stmt.executeQuery(query);

         while (rs.next()) {
                String sqlRecipeProcess = rs.getString("id");
                String sqlRecipeProcess2 = rs.getString("name");
        }


    }catch(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>`

mysql folder - dockerfile mysql文件夹-dockerfile

FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=".."
ENV MYSQL_DATABASE=".."
ENV MYSQL_USER=".." 
ENV MYSQL_PASSWORD=".."
EXPOSE 3306

tomcat folder - mysql-connector-java-5.1.44-bin.jar tomcat文件夹-mysql-connector-java-5.1.44-bin.jar

tomcat folder - web.xml Tomcat文件夹-web.xml

<web-app></web-app>

run by: docker build -t my-mysql . 运行者:docker build -t my-mysql。 docker run -dit --name mysql1 -p 3306:3306 my-mysql docker运行-dit --name mysql1 -p 3306:3306 my-mysql

and input datadase using mysql workbench(i granted a privileges and checked the data at docker mysql bash.) 并使用mysql工作台输入datadase(我被授予特权并在docker mysql bash上检查了数据。)

run by : 由......运营 :

docker build -t my-tomcat .
docker run -dit --link mysql1:my-mysql --name myTomcat1 -p 8888:8080 my-tomcat

get access to http://localhost:8888/test/db.jsp 可以访问http:// localhost:8888 / test / db.jsp

i think that the jdbc.jar is something wrong or db.jsp is wrong. 我认为jdbc.jar出错或db.jsp错误。

You might try this (assumes web.xml is the Web Application Context file): 您可以尝试这样做(假设web.xml是Web应用程序上下文文件):

FROM tomcat:latest
RUN mkdir -p /usr/local/tomcat/webapps/test/WEB-INF/lib
COPY ./mysql-connector-java-5.1.44-bin.jar /usr/local/tomcat/webapps/test/WEB-INF/lib
COPY ./db.jsp /usr/local/tomcat/webapps/test 
COPY ./web.xml /usr/local/tomcat/webapps/test/WEB-INF
CMD ["catalina.sh", "run"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM