Heim >Backend-Entwicklung >Golang >Warum verweigert meine Go-Anwendung eine Postgres-Verbindung in Docker Compose?
Docker-Compose: Verbindung zu Postgres abgelehnt
Beim Herstellen einer Verbindung zu Postgres über pg-admin aus einem Docker-Compose-Setup heraus können Benutzer möglicherweise stoßen auf eine Weigerung, von ihrer Go-Anwendung aus eine Verbindung herzustellen. Dieser Artikel geht auf dieses Problem ein und bietet eine Lösung.
Das Problem tritt auf, wenn die von der Go-Anwendung generierte Datenbank-URL auf den Datenbank-Hostnamen als „postgres“ verweist, während der eigentliche Container-/Dienstname „Datenbank“ lautet. Um dieses Problem zu beheben, sollten Sie entweder den Namen in der Datei „compose.yaml“ ändern oder explizit ein Hostnamenfeld definieren. Beispiel:
database: build: database restart: always hostname: postgres
Alternativ können Sie ein dediziertes Netzwerk für die Kommunikation mehrerer Containerdienste untereinander erstellen und so Verbindungsprobleme verhindern. Fügen Sie der Konfiguration jedes Dienstes einen Abschnitt „Netzwerke“ hinzu und definieren Sie das Netzwerk am Ende der compose.yaml:
database: # ... networks: - mynet backend: # ... networks: - mynet networks: mynet: name: my-shared-db-network
Durch die Implementierung dieser Änderungen können Sie gleichzeitig eine Verbindung zwischen Ihrer Go-Anwendung und Postgres herstellen Gewährleistung einer effizienten Kommunikation innerhalb der Docker-Compose-Umgebung.
Das obige ist der detaillierte Inhalt vonWarum verweigert meine Go-Anwendung eine Postgres-Verbindung in Docker Compose?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!