通信链接失败,Spring Boot + MySql + Docker + Hibernate

时间:2019-11-15 16:21:08

标签: mysql spring spring-boot docker docker-compose

我正在使用Spring Boot,Hibernate和MySql。在运行应用程序时,它按预期运行得很好。但是,在制作docker-compose文件并使用mysql docker image运行应用docker镜像时,会出现此错误。

  

错误   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;
}
  

Application.properties

     

spring.datasource.url = jdbc:mysql:// localhost / database?autoReconnect = true&useSSL = false   spring.datasource.username = root

     

spring.datasource.password = root

请指导我如何解决此问题。

**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

3 个答案:

答案 0 :(得分:1)

该问题归因于jdbc url中对本地主机的引用。

以下配置应该可以使用。

**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

答案 1 :(得分:0)

您是否告诉码头工人它取决于SQL? 我的意思是有这样的东西:

depends_on: 
 - mysql_server

在您的docker-compose.yml中?

看起来像是配置问题。

答案 2 :(得分:0)

当我遇到此错误时,

This Docker forum discussion帮助了我。对我来说,这是缓存问题,运行docker-compose down --rmi all

后没有收到错误消息