Maison  >  Article  >  base de données  >  Pourquoi mon application Spring Boot Dockerisée obtient-elle un « échec du lien de communication » lors de la connexion à MySQL ?

Pourquoi mon application Spring Boot Dockerisée obtient-elle un « échec du lien de communication » lors de la connexion à MySQL ?

DDD
DDDoriginal
2024-11-02 18:11:29226parcourir

Why Does My Dockerized Spring Boot App Get

Spring Boot, MySQL et Hibernate dockerisés : dépannage de « échec du lien de communication »

Lors de l'exécution d'une application Spring Boot avec MySQL dans un Docker conteneur, il est possible de rencontrer l'erreur « Échec du lien de communication » en raison de problèmes de connexion entre l'application et la base de données. Ce problème peut être résolu en garantissant que le nom d'hôte de la base de données correct est utilisé dans la configuration de l'application.

Dans la configuration fournie, la méthode createConnection utilise le nom d'hôte localhost dans l'URL JDBC. Il s'agit de la machine hôte, qui n'est pas celle sur laquelle l'image MySQL Docker est exécutée.

Pour résoudre le problème, le fichier Docker Compose doit être modifié pour utiliser le nom d'hôte de l'image MySQL dans la configuration de l'environnement de l'application Spring Boot. Voici le fichier Docker Compose mis à jour :

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

En spécifiant la variable d'environnement SPRING_DATASOURCE_URL dans l'image Docker de l'application Spring Boot, le nom d'hôte du conteneur MySQL (docker-mysql) sera utilisé dans la connexion JDBC. Cela résout le problème de communication et permet à l'application de se connecter avec succès à la base de données.

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