Maison >développement back-end >Golang >Comment se connecter à un serveur MySQL à partir d'une application Go dans Docker en cas de « Connexion refusée » ?

Comment se connecter à un serveur MySQL à partir d'une application Go dans Docker en cas de « Connexion refusée » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 05:33:28562parcourir

How to Connect to a MySQL Server from a Go Application in Docker When Encountering

Erreur : connexion refusée lors de la connexion au serveur MySQL depuis Go dans Docker

Lorsque vous essayez de vous connecter à un serveur MySQL à partir d'une application Go exécutée dans Docker, les développeurs peuvent rencontrer l'erreur suivante :

dial tcp 127.0.0.1:3306: connect: connection refused

Cause :

Par défaut, les conteneurs Docker s'exécutent dans des espaces réseau isolés, ce qui empêche les applications exécutées à l'intérieur d'accéder directement à l'hôte localhost de la machine.

Solution :

Pour résoudre ce problème, utilisez le nom d'hôte spécial docker.for.mac.localhost au lieu de localhost. Cette adresse permet la communication avec les services de la machine hôte en utilisant le réseau Docker :

  1. Mettez à jour la chaîne de connexion dans le code Go :
<code class="go">db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(docker.for.mac.localhost:3306)/"+dbName)</code>
  1. Si vous utilisez Docker Compose, ajoutez la ligne suivante au fichier docker-compose.yml sous la définition de service pour le conteneur de base de données :
<code class="yml">ports:
  - "3306:3306"</code>

Cela mappera le port 3306 de la machine hôte au port 3306 du conteneur, permettant à l'application Go de se connecter via le bon port.

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