首页  >  文章  >  数据库  >  如何修复在 Docker 化的 Spring Boot 应用程序中连接到 MySQL 时出现“通信链路故障”错误?

如何修复在 Docker 化的 Spring Boot 应用程序中连接到 MySQL 时出现“通信链路故障”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 05:38:29150浏览

How to Fix “Communications Link Failure” Errors When Connecting to MySQL in a Dockerized Spring Boot Application?

Spring Boot、MySQL、Docker、Hibernate 通信链路失败

问题:
运行时使用 Docker Compose 运行具有 Hibernate 和 MySQL 的 Spring Boot 应用程序时,会出现错误并显示以下消息:

Communications link failure
java.net.ConnectException: Connection refused

详细信息:
当应用程序尝试建立一个连接到 MySQL 数据库。 jdbc:mysql://localhost/database 中的连接 URL 指的是本地主机,这不是 Docker 容器内的正确地址。

解决方案:
解决此问题问题,应更新 JDBC 连接和 Spring Boot 配置 (application.properties) 中的连接 URL 以指向 MySQL 容器的地址。

JDBC 连接:

<code class="java">private Connection createConnection() throws SQLException {
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    String mysqlUrl = "jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false";
    Connection connection = DriverManager.getConnection(mysqlUrl, "root", "root");
    return connection;
}</code>

Spring Boot 配置(application.properties):

<code class="properties">spring.datasource.url=jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root</code>

Docker Compose 配置(docker-compose.yml):
确保Docker Compose 配置正确定义了 MySQL 容器的端口映射:

<code class="yaml">services:
  docker-mysql:
    image: mysql:5.7
    ports:
      - 3307:3306</code>

并且应用程序容器依赖于 MySQL 容器:

<code class="yaml">app:
    image: app:latest
    ports:
      - 8091:8091
    depends_on:
      - docker-mysql</code>

以上是如何修复在 Docker 化的 Spring Boot 应用程序中连接到 MySQL 时出现“通信链路故障”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn