Docker-Compose Postgres-Verbindung abgelehnt: Verbindungsprobleme lösen
In einem Docker-Compose-Setup mit Postgres DB mit pg-admin und Go, Möglicherweise treten Verbindungsprobleme zwischen Go und Postgres auf, obwohl pg-admin erfolgreich eine Verbindung herstellen kann. Dieser Artikel geht auf die möglichen Ursachen ein und bietet Lösungen.
Ursache
Das Problem entsteht durch den im Datenbankverbindungs-URI angegebenen Hostnamen. Während die Umgebungsvariable auf „postgres“ verweist, lautet der Docker-Container-/Dienstname für Postgres „database“. Diese Diskrepanz verhindert, dass Go eine Verbindung aufbaut.
Lösung
Es gibt zwei mögliche Lösungen:
Option 1: Ändern Sie den Containernamen
Ändern Sie die Docker-Compose-Datei, um den Dienstnamen von „Datenbank“ in zu ändern „postgres.“
database: build: database restart: always hostname: postgres
Option 2: Verwenden Sie ein explizites Hostnamenfeld
Alternativ können Sie der Postgres-Dienstkonfiguration ein explizites Hostnamenfeld hinzufügen:
database: build: database restart: always hostname: postgres
Beide dieser Lösungen stellt sicher, dass der Hostname im Verbindungs-URI mit dem Namen des Postgres-Containers übereinstimmt. Damit Go eine erfolgreiche Verbindung herstellen kann.
Zusätzliche Überlegungen
Damit mehrere Containerdienste effektiv kommunizieren können, können Sie die Einrichtung eines dedizierten Netzwerks in Betracht ziehen. Fügen Sie dazu einen Abschnitt „Netzwerke“ zu jedem gewünschten Dienst im selben Netzwerk hinzu.
database: # ... networks: - mynet backend: # ... networks: - mynet
Abschließend definieren Sie das Netzwerk am Ende der Erstellungsdatei:
networks: mynet: name: my-shared-db-network
Das obige ist der detaillierte Inhalt vonWarum wird meiner Go-App „Verbindung verweigert' zu Docker Compose Postgres angezeigt, wenn pgAdmin erfolgreich eine Verbindung herstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!