Maison >base de données >tutoriel mysql >Pourquoi est-ce que je reçois une erreur ECONNREFUSED lors de la connexion à mon conteneur MySQL Docker depuis Node.js ?

Pourquoi est-ce que je reçois une erreur ECONNREFUSED lors de la connexion à mon conteneur MySQL Docker depuis Node.js ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 02:39:02194parcourir

Why am I getting an ECONNREFUSED error when connecting to my MySQL Docker container from Node.js?

Node.js se connecte au conteneur MySQL Docker ECONNREFUSED

Lors de la tentative de connexion à un conteneur MySQL Docker à l'aide de Node.js, une erreur ECONNREFUSED (par exemple, ECONNREFUSED 127.0.0.1:3307) peut se produire. Cette erreur indique que Node.js ne parvient pas à établir une connexion au conteneur MySQL.

Configuration de Docker Compose

Comme illustré dans le fichier docker-compose.yml fourni , il est essentiel de comprendre que la configuration du mappage des ports (par exemple, 3307:3306) spécifie uniquement la manière dont Docker mappe les ports hôtes aux ports de conteneur. Le conteneur lui-même écoute toujours sur son port par défaut (par exemple, 3306 pour MySQL).

Configuration de la connexion Node.js

Pour résoudre l'erreur ECONNREFUSED, assurez-vous que le serveur Node L'application .js est configurée pour se connecter au port interne du conteneur MySQL. Dans l'exemple fourni, la propriété host doit être définie sur « mysql » et la propriété port doit être définie sur « 3306 ».

const config = {
    host: 'mysql',
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
};

Commande dans Docker Compose

De plus, la propriété command dans le fichier docker-compose.yml doit être mise à jour pour attendre MySQL sur le port 3306 au lieu de 3307.

command: ["./wait-for-it.sh", "mysql:3306"]

Remarque : Il est recommandé d'utiliser le script wait-for-it.sh pour garantir que le conteneur MySQL est entièrement initialisé avant de tenter de se connecter depuis Node.js. Ce script peut être obtenu sur https://github.com/vishnubob/wait-for-it.

En suivant ces étapes, il devrait être possible d'établir une connexion entre l'application Node.js et MySQL Conteneur Docker.

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