Tomcat容器和Mysql容器使用docker-compose连接

时间:2018-10-15 06:53:19

标签: mysql docker docker-compose

我是Docker的新手。我检查了这个答案Unable to Connect MySQL container to Tomcat Container in docker 但这对我不起作用。这就是为什么我发布此问题。 我的docker-compose在下面。

version: '3'
services:
    web:
        build: .
        ports:
         - "4000:8080"
        links:
         - db

    db:
        image: mysql:latest
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: custom
            MYSQL_USER: root
            MYSQL_PASSWORD: root
        volumes:
         - ./mysql-data:/var/lib/mysql 

因此,我需要建立连接。我正在使用jsp文件进行连接并获取数据。我的jsp文件在下面。

 <%@ page import="pageNumber.*,java.util.*, java.io.*, java.sql.*"%>
    <!DOCTYPE html>
    <body>
        <% 
        try {
          Connection con;
          Class.forName("com.mysql.jdbc.Driver");
          con = DriverManager.getConnection("jdbc:mysql://db:3306/custom?useSSL=false", "root", "root");
          if(con!=null){
              out.println ("database successfully opened.");
              out.println(con);
          }

        }
        catch(SQLException e) {
          out.println("SQLException caught: " +e.getMessage());
        }
      %>
    </body>

我仔细阅读了Unable to Connect MySQL container to Tomcat Container in docker问题并进行了更改。但我仍然收到此错误。

  

捕获到的SQLException:通信链接失败最近一次成功发送到服务器的数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。

请任何人可以帮助我解决此问题。谢谢您的时间

1 个答案:

答案 0 :(得分:0)

https://docs.docker.com/compose/compose-file/#build根据他们的文档。我认为我们不能给予

  

构建。

docker-compose.yml中的

需要在build命令后给出目录。在这种情况下,我采用了错误的方式。

正确方法

  

build ./dir