Maison >développement back-end >Golang >Pourquoi mon application Go obtient-elle une « connexion refusée » pour Docker Compose Postgres lorsque pgAdmin se connecte avec succès ?
Connexion Docker-Compose Postgres refusée : résolution des problèmes de connexion
Dans une configuration Docker-compose impliquant Postgres DB avec pg-admin et Go, vous pouvez rencontrer des problèmes de connexion entre Go et Postgres, même si pg-admin parvient à se connecter. Cet article examine les causes potentielles et propose des solutions.
Cause première
Le problème survient en raison du nom d'hôte spécifié dans l'URI de connexion à la base de données. Alors que la variable d'environnement pointe vers « postgres », le nom du conteneur/service Docker pour Postgres est « base de données ». Cet écart empêche Go d'établir une connexion.
Solution
Il existe deux solutions possibles :
Option 1 : Modifier le nom du conteneur
Modifiez le fichier de composition Docker pour changer le nom du service de "base de données" à "postgres."
database: build: database restart: always hostname: postgres
Option 2 : Utiliser un champ de nom d'hôte explicite
Vous pouvez également ajouter un champ de nom d'hôte explicite à la configuration du service Postgres :
database: build: database restart: always hostname: postgres
L'une ou l'autre de ces solutions garantira que le nom d'hôte dans l'URI de connexion correspond au nom du conteneur Postgres, permettant à Go d'établir une connexion réussie.
Considérations supplémentaires
Pour que plusieurs services de conteneurs communiquent efficacement, vous pouvez envisager de créer un réseau dédié. Pour cela, ajoutez une section "réseaux" à chaque service que vous souhaitez sur le même réseau.
database: # ... networks: - mynet backend: # ... networks: - mynet
Enfin, définissez le réseau à la fin du fichier de composition :
networks: mynet: name: my-shared-db-network
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!