Docker ポート公開の失敗: 「受信失敗: ピアによる接続のリセット」の解決
Docker コンテナ内で Go アプリケーションを実行しようとしたとき、公開ポートにアクセスすると、「受信失敗: ピアによって接続がリセットされました」というエラーが発生します。 docker-compose.yaml ファイルでポート マッピングが正しく構成されているにもかかわらず、アプリケーションは外部ソースからアクセスできないままです。
この問題の根本原因は、Go アプリケーションが受信リクエストをリッスンする方法にあります。デフォルトでは、Go アプリケーションは構文 http.ListenAndServe("localhost:8081", nil) を使用する場合、ローカル ループバック インターフェイス ("localhost") にバインドします。
解決策:
Docker コンテナ内では、Go アプリケーションはループバック インターフェイスに制限するのではなく、利用可能なすべてのインターフェイスをリッスンする必要があります。これを実現するには、Go アプリケーションで次のコードを変更します。
// Original code http.ListenAndServe("localhost:8081", nil) // Updated code http.ListenAndServe(":8081", nil)
「localhost」プレフィックスを削除することで、アプリケーションはループバック インターフェイスと外部ソースの両方からの接続を受け入れるようになります。この変更により、docker-compose.yaml ファイルでポートを公開した後にアプリケーションにアクセスできるようになります。
以上が公開された Docker ポートにアクセスできないのはなぜですか? - Go アプリケーションの「受信失敗: ピアによって接続がリセットされました」のトラブルシューティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。