Maison >développement back-end >Golang >Connexion Docker Compose Postgres refusée : pourquoi pgAdmin fonctionne-t-il mais mon application Go échoue ?

Connexion Docker Compose Postgres refusée : pourquoi pgAdmin fonctionne-t-il mais mon application Go échoue ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 13:50:12372parcourir

Docker Compose Postgres Connection Refused: Why Does pgAdmin Work But My Go App Fails?

[Docker Compose] Erreur de connexion Postgres : résolution de la « connexion refusée »

Problème :
Lors de la tentative pour établir une connexion Go à une base de données Postgres exécutée dans Docker Compose, l'erreur "connexion refusée" est rencontrée, malgré la possibilité de se connecter avec succès depuis pg-admin.

Raison :
La chaîne de connexion fait référence au nom d'hôte de la base de données comme "postgres", qui correspond au nom du service dans Docker Compose. Cependant, le nom réel du conteneur est « base de données ».

Solution :
Pour résoudre le problème, renommez le conteneur de base de données dans le fichier Docker Compose en « postgres » ou spécifiez explicitement le nom d'hôte :

database:
  build: database
  restart: always
  hostname: postgres  # Add this line

Supplémentaire Considérations :

  • Réseau : L'ajout d'un réseau dédié pour permettre à plusieurs services de conteneurs de communiquer peut améliorer la connectivité.
  • Chaîne de connexion : Assurez-vous que la chaîne de connexion dans le code Go (_str_) inclut le bon nom d'hôte :

    str := fmt.Sprintf("database://%s:%s@%s:%s/%s?sslmode=disable", user, pass, "postgres", port, dbname)  # Update the hostname to "postgres"

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