Maison > base de données > tutoriel mysql > Comment corriger les erreurs « Échec du lien de communication » lors de la connexion à MySQL dans une application Spring Boot Dockerisée ?

Comment corriger les erreurs « Échec du lien de communication » lors de la connexion à MySQL dans une application Spring Boot Dockerisée ?

Mary-Kate Olsen
Libérer: 2024-11-02 05:38:29
original
268 Les gens l'ont consulté

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

Échec du lien de communication dans Spring Boot, MySQL, Docker et Hibernate

Problème :
Lors de l'exécution une application Spring Boot avec Hibernate et MySQL utilisant Docker Compose, une erreur se produit avec le message suivant :

Communications link failure
java.net.ConnectException: Connection refused
Copier après la connexion

Détails :
L'erreur se produit lorsque l'application tente d'établir un connexion à la base de données MySQL. L'URL de connexion dans jdbc:mysql://localhost/database fait référence à l'hôte local, ce qui n'est pas la bonne adresse dans le conteneur Docker.

Solution :
Pour résoudre ce problème problème, l'URL de connexion dans la connexion JDBC et la configuration Spring Boot (application.properties) doivent être mises à jour pour pointer vers l'adresse du conteneur MySQL.

Connexion 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>
Copier après la connexion

Configuration de 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>
Copier après la connexion

Configuration de Docker Compose (docker-compose.yml) :
Assurez-vous que la configuration Docker Compose définit correctement le mappage de port pour le conteneur MySQL :

<code class="yaml">services:
  docker-mysql:
    image: mysql:5.7
    ports:
      - 3307:3306</code>
Copier après la connexion

et que le conteneur d'application dépend du conteneur MySQL :

<code class="yaml">app:
    image: app:latest
    ports:
      - 8091:8091
    depends_on:
      - docker-mysql</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal