Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Ralat 'Kegagalan Pautan Komunikasi' Semasa Menyambung ke MySQL dalam Aplikasi Boot Spring Dockerized?

Bagaimana untuk Membetulkan Ralat 'Kegagalan Pautan Komunikasi' Semasa Menyambung ke MySQL dalam Aplikasi Boot Spring Dockerized?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 05:38:29182semak imbas

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

Kegagalan Pautan Komunikasi dalam Spring Boot, MySQL, Docker dan Hibernate

Masalah:
Apabila berjalan aplikasi Spring Boot dengan Hibernate dan MySQL menggunakan Docker Compose, ralat berlaku dengan mesej berikut:

Communications link failure
java.net.ConnectException: Connection refused

Butiran:
Ralat berlaku apabila aplikasi cuba mewujudkan sambungan ke pangkalan data MySQL. URL sambungan dalam jdbc:mysql://localhost/database merujuk kepada hos setempat, yang bukan alamat yang betul dalam bekas Docker.

Penyelesaian:
Untuk menyelesaikan masalah ini isu, URL sambungan dalam sambungan JDBC dan konfigurasi Spring Boot (application.properties) harus dikemas kini untuk menghala ke alamat bekas MySQL.

Sambungan 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>

Konfigurasi But Spring (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>

Konfigurasi Karang Docker (docker-compose.yml):
Pastikan bahawa konfigurasi Docker Compose dengan betul mentakrifkan pemetaan port untuk bekas MySQL:

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

dan bekas aplikasi bergantung pada bekas MySQL:

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

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Kegagalan Pautan Komunikasi' Semasa Menyambung ke MySQL dalam Aplikasi Boot Spring Dockerized?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn