Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich ECONNREFUSED, wenn ich von Node.js aus eine Verbindung zu einem MySQL-Docker-Container herstelle?

Warum erhalte ich ECONNREFUSED, wenn ich von Node.js aus eine Verbindung zu einem MySQL-Docker-Container herstelle?

DDD
Freigeben: 2024-11-10 22:22:03
Original
201 Leute haben es durchsucht

Why Am I Getting ECONNREFUSED When Connecting to a MySQL Docker Container from Node.js?

Herstellen einer Verbindung mit einem MySQL-Docker-Container: Beheben von ECONNREFUSED

Dieser Artikel befasst sich mit dem häufig auftretenden ECONNREFUSED-Fehler beim Versuch, eine Verbindung zu einem MySQL-Docker-Container herzustellen Node.js.

Hintergrund

In einer Docker-Anwendung mit mehreren Containern ist es üblich, einen Datenbankcontainer (z. B. MySQL) zu haben und von anderen Containern aus eine Verbindung zu diesem herzustellen (z. B. Node.js-Webanwendung). Diese Verbindung kann jedoch mit einem ECONNREFUSED-Fehler fehlschlagen, was darauf hinweist, dass die Node.js-Anwendung die Datenbank nicht erreichen kann.

Verstehen des Problems

Beim Konfigurieren von Docker-Containern portieren Die Kartierung ist von entscheidender Bedeutung. Ein häufiges Missverständnis besteht darin, dass eine Portzuordnung wie „3307:3306“ bedeutet, dass der Container Port 3307 überwacht. Container überwachen jedoch normalerweise ihre internen Ports. Im Fall von MySQL überwacht es Port 3306 innerhalb des Containers.

Lösung: Node.js-Konfiguration und DNS ändern

Um dieses Problem zu beheben, ändern Sie den Knoten .js-Konfiguration, um eine Verbindung zur Datenbank über Port 3306 herzustellen und den richtigen DNS anzugeben. In diesem Fall ist der DNS „mysql“, wie in docker-compose.yml definiert.

Dadurch wird die Node.js-Konfiguration wie folgt aktualisiert:

const config = {
    host: 'mysql',  // Replace 'localhost' with the container DNS
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}
Nach dem Login kopieren

Ändern Sie außerdem die Befehl in der docker-compose.yml:

command: ["./wait-for-it.sh", "mysql:3306"]  // Update the port number
Nach dem Login kopieren

Dadurch wird sichergestellt, dass das „wait-for-it.sh“-Skript darauf wartet, dass MySQL auf Port 3306 im Container lauscht.

Fazit

Durch das Verständnis des Port-Mapping-Mechanismus und die Aktualisierung der Node.js-Konfiguration und des DNS ist es möglich, den ECONNREFUSED-Fehler zu beheben und eine erfolgreiche Verbindung zwischen der Node.js-Anwendung und MySQL herzustellen Container in einer Docker-Umgebung.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich ECONNREFUSED, wenn ich von Node.js aus eine Verbindung zu einem MySQL-Docker-Container herstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage