Rumah > pangkalan data > tutorial mysql > 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
Lepaskan: 2024-11-02 05:38:29
asal
237 orang telah melayarinya

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
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

dan bekas aplikasi bergantung pada bekas MySQL:

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan