ホームページ >バックエンド開発 >Golang >公開された Docker ポートにアクセスできないのはなぜですか? - Go アプリケーションの「受信失敗: ピアによって接続がリセットされました」のトラブルシューティング

公開された Docker ポートにアクセスできないのはなぜですか? - Go アプリケーションの「受信失敗: ピアによって接続がリセットされました」のトラブルシューティング

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 14:17:021054ブラウズ

Why Can't I Access My Exposed Docker Port? - Troubleshooting

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。