通信链路故障,spring boot+mysql+docker+hibernate

qq24tv8q  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(328)

我正在使用springboot、hibernate和mysql。在运行应用程序时,它按照预期运行良好。但是,当制作docker compose文件并用mysql docker image运行app docker image时,会出现这个错误。
错误com.mysql.jdbc.exceptions.jdbc4.communicationsexception:通信链接失败java.net.connectexception:连接被拒绝。

private Connection createConnection() throws SQLException 
{
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        String mysqlUrl = "jdbc:mysql://localhost/database?autoReconnect=true&useSSL=false";
        Connection connection = DriverManager.getConnection(mysqlUrl, "root", "root");
        return connection;
}

应用程序属性
spring.datasource.url=jdbc:mysql用法:/localhost/database?autoreconnect=true&usessl=false spring.datasource.username=root
spring.datasource.password=根
请指导我如何解决这个问题。


**docker-compose.yml**

version: '3'

services:
  docker-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=database
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    ports:
      - 3307:3306

  app:
    image: app:latest
    ports:
       - 8091:8091
    depends_on:
       - docker-mysql
ie3xauqp

ie3xauqp1#

问题是由于jdbc url中引用了localhost。
下面的配置应该可以工作。


**docker-compose.yml**

version: '3'

services:
  docker-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=database
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    ports:
      - 3307:3306

  app:
    image: app:latest
    ports:
       - 8091:8091
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false
    depends_on:
       - docker-mysql
u7up0aaq

u7up0aaq2#

当我遇到这个错误时,docker论坛的讨论帮助了我。对我来说,这是一个与缓存的问题,我没有得到运行后的错误 docker-compose down --rmi all

epfja78i

epfja78i3#

你有没有告诉你的 Docker 它依赖于sql?我的意思是有这样的事情:

depends_on: 
 - mysql_server

在你的docker-compose.yml里?
好像是配置问题。

相关问题