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!