无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器
Posted
技术标签:
【中文标题】无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器【英文标题】:Not able to connect from Spring Boot Docker Container to Local MySQL Database Server 【发布时间】:2019-09-09 12:32:20 【问题描述】:我正在使用 Windows 10 环境。 我的 Docker 版本 1.13.0,构建 49bf474。
我有一个在 Docker 容器上运行的 Spring Boot 应用程序 我正在尝试从 Spring Application 访问 MySQL 的本地实例。我的 MYSQL 实例没有在容器上运行。
我知道这是一个网络问题,并且已经尝试运行 docker 使用以下命令: docker run -p 8282:8191 ami --network="host" 但没有成功。
谁能帮我解决这个问题。
提前致谢。
注意:我的 Spring 应用程序配置很好,因为我可以毫无问题地从容器连接 AWS MSQL RDS 服务器。
我收到的错误如下
2019-04-19 07:33:32.025 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3308 ms
2019-04-19 07:33:32.264 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2019-04-19 07:33:33.422 ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
信息很少:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/financedb
spring.datasource.username=****
spring.datasource.password=****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
【问题讨论】:
【参考方案1】:Docker for Windows 使用 vm 来运行 Linux 容器。因此,当使用 net=host 运行时,“localhost”是 vm 而不是您的 Windows 机器 您可以使用特殊主机名作为 MySQL 主机
docker.for.win.localhost
这指向你的 windows 机器,你甚至可以在没有 net=host 的情况下运行。
【讨论】:
感谢您的回复。您能否给我一些参考或指导如何在 docker 中映射特殊的主机名 ..please 特殊主机名由windows/Mac上的Docker自动提供。 谢谢托马斯。它对我有帮助..只有改变我必须做的..来升级我的 docker 版本。再次感谢..它现在正在工作.. spring.datasource.url=jdbc:mysql://docker.for.win.localhost:3306/financedb 知道如何在 Linux 中使用它吗?我们使用了localhost
,但它不起作用。以上是关于无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器
无法从Spring Boot Docker容器连接到本地MySQL数据库服务器
在 Docker 容器内运行 Spring Boot 应用程序,无法连接 MySQL
如何从不同的 docker 容器中读取 Spring Boot 应用程序属性?