首页 > 解决方案 > 在docker上运行的mysql容器无法连接spring boot java api服务

问题描述

  1. 我有一个在 docker 容器上运行的 mysql。使用此命令拉取并运行容器

  2. $ docker container run --name cloud --network employee -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bootdb -d mysql:5.7

  3. 本地的spring boot应用程序-我正在尝试在java应用程序和mysql容器之间建立连接:

配置属性

spring.datasource.url=jdbc:mysql://cloud/bootdb?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.platform=mysql
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto = create
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect

错误:

  1. 引起:java.net.UnknownHostException:云
  2. 原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障最后一个成功发送到服务器的数据包是0毫秒前。驱动程序没有收到来自服务器的任何数据包。

尽管我已经通过更改 mysql 连接器版本和 mysql 容器版本来构建该应用程序。无法成功。-

pom文件配置——

  1. spring-boot-starter-数据-jpa
  2. mysql-connector-java - 版本 5.1.46,docker mysql:5

标签: javaspringspring-bootdocker

解决方案


当您说 - Spring Boot 应用程序正在本地运行时 - 我假设它在 docker 之外运行。
尝试以下选项

Step1:使用暴露的端口再次创建 mysql 容器:3306

docker run --name cloud --network employee -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bootdb -d mysql:5.7

Step2 : 验证 mysql 是否在暴露的端口上运行并且您可以访问它。从 MY-SQL GUI 工具中获取帮助。

Step3 : 更新 spring-boot 配置文件。
spring.datasource.url=jdbc:mysql://localhost:3306/bootdb?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false


推荐阅读