Heim > Backend-Entwicklung > Golang > Docker Compose Postgres-Verbindung abgelehnt: Warum funktioniert pgAdmin, aber meine Go-App schlägt fehl?

Docker Compose Postgres-Verbindung abgelehnt: Warum funktioniert pgAdmin, aber meine Go-App schlägt fehl?

Susan Sarandon
Freigeben: 2024-12-05 13:50:12
Original
364 Leute haben es durchsucht

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

[Docker Compose] Postgres-Verbindungsfehler: „Verbindung abgelehnt“ wird behoben

Problem:
Beim Versuch Um eine Go-Verbindung zu einer Postgres-Datenbank herzustellen, die in Docker Compose ausgeführt wird, tritt der Fehler „Verbindung abgelehnt“ auf, obwohl eine Verbindung hergestellt werden konnte erfolgreich von pg-admin.

Grund:
Die Verbindungszeichenfolge verweist auf den Datenbank-Hostnamen als „postgres“, der mit dem Dienstnamen in Docker Compose übereinstimmt. Der tatsächliche Containername lautet jedoch „Datenbank“.

Lösung:
Um das Problem zu beheben, benennen Sie den Datenbankcontainer in der Docker Compose-Datei entweder in „postgres“ um oder geben Sie ihn explizit an der Hostname:

database:
  build: database
  restart: always
  hostname: postgres  # Add this line
Nach dem Login kopieren

Zusätzlich Überlegungen:

  • Netzwerk: Das Hinzufügen eines dedizierten Netzwerks für die Kommunikation mehrerer Containerdienste kann die Konnektivität verbessern.
  • Verbindungszeichenfolge : Stellen Sie sicher, dass die Verbindungszeichenfolge im Go-Code (_str_) die richtige enthält Hostname:

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

Das obige ist der detaillierte Inhalt vonDocker Compose Postgres-Verbindung abgelehnt: Warum funktioniert pgAdmin, aber meine Go-App schlägt fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage