Heim > Artikel > Backend-Entwicklung > Warum kann ich nicht auf meinen exponierten Docker-Port zugreifen? – Fehlerbehebung „Recv-Fehler: Verbindung vom Peer zurückgesetzt' in Go-Anwendungen
Docker-Port-Offenlegungsfehler: Behebung von „Recv-Fehler: Verbindung vom Peer zurückgesetzt“
Beim Versuch, eine Go-Anwendung in einem Docker-Container auszuführen Wenn Sie auf einen offengelegten Port zugreifen, tritt die Fehlermeldung „Recv-Fehler: Verbindung vom Peer zurückgesetzt“ auf. Obwohl die Portzuordnung in der Datei docker-compose.yaml korrekt konfiguriert wurde, bleibt die Anwendung von externen Quellen aus nicht erreichbar.
Die Hauptursache für dieses Problem liegt in der Art und Weise, wie die Go-Anwendung auf eingehende Anfragen lauscht. Standardmäßig binden Go-Anwendungen an die lokale Loopback-Schnittstelle („localhost“), wenn sie die Syntax http.ListenAndServe(„localhost:8081“, nil) verwenden.
Lösung:
Innerhalb des Docker-Containers sollte die Go-Anwendung alle verfügbaren Schnittstellen überwachen, anstatt sich auf die Loopback-Schnittstelle zu beschränken. Um dies zu erreichen, ändern Sie den folgenden Code in der Go-Anwendung:
// Original code http.ListenAndServe("localhost:8081", nil) // Updated code http.ListenAndServe(":8081", nil)
Durch das Entfernen des „localhost“-Präfixes akzeptiert die Anwendung jetzt Verbindungen sowohl von der Loopback-Schnittstelle als auch von externen Quellen. Diese Änderung stellt sicher, dass auf die Anwendung zugegriffen werden kann, nachdem der Port in der Datei docker-compose.yaml verfügbar gemacht wurde.
Das obige ist der detaillierte Inhalt vonWarum kann ich nicht auf meinen exponierten Docker-Port zugreifen? – Fehlerbehebung „Recv-Fehler: Verbindung vom Peer zurückgesetzt' in Go-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!