Pembangun yang menggunakan Spring Boot, Hibernate dan MySQL dalam persekitaran Docker mungkin menghadapi isu biasa yang mengakibatkan dalam mesej ralat ini:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure java.net.ConnectException: Connection refused.
Ralat ini biasanya berpunca daripada rujukan hos yang salah dalam URL JDBC. Untuk menyelesaikan masalah ini, adalah penting untuk mengubah suai URL JDBC untuk menunjuk ke nama hos pangkalan data yang betul dalam persekitaran Docker.
Berikut ialah demonstrasi penyelesaian yang jelas:
1. Konfigurasi Karang Docker:
Fail docker-compose.yml yang disediakan menggunakan localhost sebagai hos untuk bekas pangkalan data MySQL, yang tidak betul dalam persekitaran Docker.
2 . Konfigurasi Karang Docker Dibetulkan:
Untuk membetulkannya, kemas kini fail docker-compose.yml seperti berikut:
version: '3' services: docker-mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=database - MYSQL_USER=root - MYSQL_PASSWORD=root ports: - 3307:3306 app: image: app:latest ports: - 8091:8091 environment: SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false depends_on: - docker-mysql
Dalam konfigurasi yang dikemas kini ini, hos docker-mysql merujuk kepada nama bekas MySQL, yang memastikan sambungan yang betul dalam persekitaran Docker.
3. Kemas kini Konfigurasi Aplikasi But Spring:
Alih keluar sifat spring.datasource.url daripada fail application.properties. Spring Boot akan menggunakan pembolehubah persekitaran SPRING_DATASOURCE_URL untuk mengkonfigurasi URL JDBC.
Dengan melaksanakan perubahan ini, aplikasi seharusnya dapat mewujudkan sambungan yang berjaya ke pangkalan data MySQL dalam persekitaran Docker.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Kegagalan Pautan Komunikasi\' dalam Boot Spring dengan Docker dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!