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

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

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

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

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

  1. **docker-compose.yml**
  2. version: '3'
  3. services:
  4. docker-mysql:
  5. image: mysql:5.7
  6. environment:
  7. - MYSQL_ROOT_PASSWORD=root
  8. - MYSQL_DATABASE=database
  9. - MYSQL_USER=root
  10. - MYSQL_PASSWORD=root
  11. ports:
  12. - 3307:3306
  13. app:
  14. image: app:latest
  15. ports:
  16. - 8091:8091
  17. depends_on:
  18. - docker-mysql
ie3xauqp

ie3xauqp1#

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

  1. **docker-compose.yml**
  2. version: '3'
  3. services:
  4. docker-mysql:
  5. image: mysql:5.7
  6. environment:
  7. - MYSQL_ROOT_PASSWORD=root
  8. - MYSQL_DATABASE=database
  9. - MYSQL_USER=root
  10. - MYSQL_PASSWORD=root
  11. ports:
  12. - 3307:3306
  13. app:
  14. image: app:latest
  15. ports:
  16. - 8091:8091
  17. environment:
  18. SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false
  19. depends_on:
  20. - docker-mysql
展开查看全部
u7up0aaq

u7up0aaq2#

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

epfja78i

epfja78i3#

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

  1. depends_on:
  2. - mysql_server

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

相关问题