首頁  >  文章  >  資料庫  >  如何修復在 Docker 化的 Spring Boot 應用程式中連接到 MySQL 時出現「通訊鏈路故障」錯誤?

如何修復在 Docker 化的 Spring Boot 應用程式中連接到 MySQL 時出現「通訊鏈路故障」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 05:38:29180瀏覽

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

Spring Boot、MySQL、Docker、Hibernate 通訊鏈路失敗

問題:
運行時使用🎜>

問題:
Communications link failure
java.net.ConnectException: Connection refused

運行時使用Docker Compose 運行具有Hibernate 和MySQL 的Spring Boot應用程式時,會出現錯誤並顯示以下訊息:

詳細資訊:

當應用程式嘗試建立一個連接到 MySQL 資料庫時。 jdbc:mysql://localhost/database 中的連線 URL 指的是本機,這不是 Docker 容器內的正確位址。

解決方案:

解決此問題問題,應更新 JDBC 連線和 Spring Boot 設定 (application.properties) 中的連線 URL 以指向 MySQL 容器的位址。

<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>
JDBC 連接:

<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>
Spring Boot 配置(application.properties):


Docker Compose配置(docker-compose.yml):
<code class="yaml">services:
  docker-mysql:
    image: mysql:5.7
    ports:
      - 3307:3306</code>

確保Docker Compose 配置正確定義了MySQL 容器的連接埠對映:

<code class="yaml">app:
    image: app:latest
    ports:
      - 8091:8091
    depends_on:
      - docker-mysql</code>
並且應用程式容器依賴MySQL 容器:

以上是如何修復在 Docker 化的 Spring Boot 應用程式中連接到 MySQL 時出現「通訊鏈路故障」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn