なぜ aspnet core は Docker 内からポート 80 で起動するのでしょうか? 質問する

なぜ aspnet core は Docker 内からポート 80 で起動するのでしょうか? 質問する

要約:aspnet core アプリが Docker イメージ内ではポート 80 で実行されるのに、Docker イメージ外ではポート 5000 で実行されるのはなぜですか。

精巧な

ここで見つかった aspnet core / docker チュートリアルを実行しました:https://learn.microsoft.com/en-us/dotnet/core/docker/building-net-docker-images

ページの半分まで進んだところで、規定どおりに次の内容でアプリケーションを開始します。

dotnet run

とりわけ、これは次のように出力します:

Now Listening on: http://localhost:5000

素晴らしい。まさに予想通りです。チュートリアルの次のステップは、まったく同じアプリケーションを Docker イメージ内から起動することです。

docker build -t aspnetapp .
docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp

その結果、

Now listening on: http://[::]:80

待って。何?aspnet core アプリがポート 80 で実行されているのはなぜですか?マシンから直接実行したときは、ポート 5000 で実行されていました。構成ファイルは変更されていません。

これはベースの Docker イメージと関係があるのではないかと疑っていますが、これを追跡できるほどの Docker のスキルがまだありません。

ベストアンサー1

コンテナはコンテナmicrosoft/aspnetcore-buildの上に構築されます microsoft/aspnetcoreそのためのdockerhubページ言う:

ポートに関する注意

この画像はASPNETCORE_URLS環境変数を次のように設定します。http://+:80つまり、たとえば Program.cs の app.UseUrl を介してアプリケーションで URL を明示的に設定していない場合、アプリケーションはコンテナー内のポート 80 でリッスンすることになります。

これは、コンテナがポートを 80 にアクティブに設定するものです。必要に応じて、次のようにしてこれを上書きできますDockerfile

環境変数 ASPNETCORE_URLS=http://+:5000

http://localhost:5000また、使用している docker コマンドにより、アプリケーションを直接実行している場合でも、コンテナー内で実行している場合でも、アプリケーションにアクセスできることに注意してください。

おすすめ記事