ホームページ >データベース >mysql チュートリアル >Docker化されたSpring BootアプリケーションでMySQLに接続するときに発生する「通信リンク障害」エラーを修正する方法は?

Docker化されたSpring BootアプリケーションでMySQLに接続するときに発生する「通信リンク障害」エラーを修正する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 05:38:29193ブラウズ

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 接続の接続 URL と Spring Boot 構成 (application.properties) を、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。