无法从 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 应用程序属性?

Docker:无法连接 Spring Boot 和 MYSQL

使用docker-compose时无法访问docker容器内的spring-boot rest-endpoint