Heim >Datenbank >MySQL-Tutorial >Wie behebt man „Communications Link Failure'-Fehler beim Herstellen einer Verbindung zu MySQL in einer Docker-Spring-Boot-Anwendung?

Wie behebt man „Communications Link Failure'-Fehler beim Herstellen einer Verbindung zu MySQL in einer Docker-Spring-Boot-Anwendung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 05:38:29193Durchsuche

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

Kommunikationsverbindungsfehler in Spring Boot, MySQL, Docker und Hibernate

Problem:
Beim Ausführen Bei einer Spring Boot-Anwendung mit Hibernate und MySQL unter Verwendung von Docker Compose tritt ein Fehler wie folgt auf Nachricht:

Communications link failure
java.net.ConnectException: Connection refused

Details:
Der Fehler tritt auf, wenn die Anwendung versucht, eine Verbindung zur MySQL-Datenbank herzustellen. Die Verbindungs-URL in jdbc:mysql://localhost/database bezieht sich auf den lokalen Host, der nicht die richtige Adresse im Docker-Container ist.

Lösung:
Um dieses Problem zu beheben Bei diesem Problem sollten die Verbindungs-URL in der JDBC-Verbindung und die Spring Boot-Konfiguration (application.properties) aktualisiert werden, um auf die MySQL-Container zu verweisen Adresse.

JDBC-Verbindung:

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

Spring Boot-Konfiguration (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>

Docker Compose-Konfiguration (docker-compose.yml):
Stellen Sie sicher, dass die Die Docker Compose-Konfiguration definiert die Portzuordnung für den MySQL-Container korrekt:

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

und dass der Anwendungscontainer vom MySQL-Container abhängt:

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

Das obige ist der detaillierte Inhalt vonWie behebt man „Communications Link Failure'-Fehler beim Herstellen einer Verbindung zu MySQL in einer Docker-Spring-Boot-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn