Heim >Datenbank >MySQL-Tutorial >Warum erhält meine Node.js-App beim Herstellen einer Verbindung zu einem MySQL-Docker-Container einen ECONNREFUSED-Fehler?

Warum erhält meine Node.js-App beim Herstellen einer Verbindung zu einem MySQL-Docker-Container einen ECONNREFUSED-Fehler?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 00:01:03602Durchsuche

Why Does My Node.js App Get an ECONNREFUSED Error When Connecting to a MySQL Docker Container?

Node.js-Verbindung zum MySQL-Docker-Container ECONNREFUSED

Problem:

Obwohl ein Wenn Docker eine Datei mit verknüpften MySQL- und Node.js-Containern erstellt, stößt die Node.js-App auf eine ECONNREFUSED-Fehler beim Versuch, über Port 3307 eine Verbindung zum MySQL-Container herzustellen.

Analyse:

Die Docker-Compose-Datei ordnet den 3307-Port des Hosts dem 3306 im Container zu . Der MySQL-Container überwacht jedoch intern 3306. Dies führt zu dem Problem, dass Node.js versucht, eine Verbindung zu Port 3307 des Hosts herzustellen, was nicht der Port ist, auf dem der Container lauscht.

Lösung:

Um das Problem zu beheben, passen Sie die MySQL-Konfiguration und die Docker-Compose-Datei wie folgt an:

MySQL geändert Konfiguration:

const config = {
    host: 'mysql',  // Use the MySQL container DNS name
    database: 'mydb',
    port: '3306',  // Match the port the MySQL container is listening on
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

Geänderte Docker Compose-Datei:

command: ["/bin/bash", "./wait-for-it.sh", "mysql:3306"]  // Match the port MySQL is listening on

Durch diese Änderungen stellt die Node.js-App nun eine Verbindung zu MySQL her Container mit dem richtigen Port, und der ECONNREFUSED-Fehler sollte behoben sein.

Das obige ist der detaillierte Inhalt vonWarum erhält meine Node.js-App beim Herstellen einer Verbindung zu einem MySQL-Docker-Container einen ECONNREFUSED-Fehler?. 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