java - 在docker上运行的mysql容器无法连接spring boot java api服务
问题描述
我有一个在 docker 容器上运行的 mysql。使用此命令拉取并运行容器
$ docker container run --name cloud --network employee -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bootdb -d mysql:5.7
本地的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
错误:
- 引起:java.net.UnknownHostException:云
- 原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障最后一个成功发送到服务器的数据包是0毫秒前。驱动程序没有收到来自服务器的任何数据包。
尽管我已经通过更改 mysql 连接器版本和 mysql 容器版本来构建该应用程序。无法成功。-
pom文件配置——
- spring-boot-starter-数据-jpa
- mysql-connector-java - 版本 5.1.46,docker mysql:5
解决方案
当您说 - 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
推荐阅读
- selenium - 如何将 Selenium 测试套件/案例导出为 C#
- java - 在不使用其他方法的情况下制作 MY OWN s1.compareTo(s2) 方法
- c++ - C++ cin.ignore 和 getline 在 while 循环中
- vba - 将功能键分配给 excel 宏
- swift - Swift ImageCropper 返回指定“窗口”之外的图像
- swift - 强制展开的可选选项不会崩溃。为什么不?
- r - 错误:包“BiocGenerics”的延迟加载失败
- json - 我希望我的 Swift 程序中“self.q”中的值也打印到 xcode 控制台
- c# - 从列表c#中替换其描述中的值
- r - 如何在 R 中实现相当于 Refresh All(在 Excel 中)?