Heim >Backend-Entwicklung >Golang >Warum verweigert meine Go-Anwendung eine Postgres-Verbindung in Docker Compose?

Warum verweigert meine Go-Anwendung eine Postgres-Verbindung in Docker Compose?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 11:02:19684Durchsuche

Why Does My Go Application Refuse a Postgres Connection 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn