Docker コンテナーで ASP.NET Core アプリを実行する
Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、「.NET および .NET Core サポート ポリシー」を参照してください。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
この記事では、Docker コンテナー内で ASP.NET Core アプリを実行する方法を示します。
Windows Home Edition は Hyper-V をサポートしておらず、Docker には Hyper-V が必要です。
dotnet publish
を使ってコンテナー化された .NET アプリについては、「dotnet publish を使用して .NET アプリをコンテナー化する」を参照してください。
ASP.NET Core の Docker イメージ
このチュートリアルでは、ASP.NET Core サンプル アプリをダウンロードして、Docker コンテナー内で実行します。 このサンプルは Linux コンテナーと Windows コンテナーのどちらでも動作します。
さまざまなコンテナー内でビルドして実行するために、サンプルの Dockerfile では Docker のマルチステージ ビルド機能を使用しています。 ビルドと実行のコンテナーは、マイクロソフトが Docker Hub に提供しているイメージから作成されます。
dotnet/sdk
サンプルでは、アプリをビルドするためにこのイメージを使用します。 イメージには、コマンド ライン ツール (CLI) が組み込まれた .NET SDK が含まれています。 イメージはローカル開発、デバッグ、および単体テスト用に最適化されています。 開発とコンパイルのためにツールがインストールされているため、比較的大きなイメージになっています。
dotnet/aspnet
サンプルでは、アプリを実行するためにこのイメージを使用します。 イメージには ASP.NET Core ランタイムとライブラリが含まれており、実稼働環境でアプリを実行するために最適化されています。 デプロイとアプリ起動の速度に対応した設計になっており、Docker レジストリから Docker ホストへのネットワーク パフォーマンスが最適化されていることから、イメージは比較的小さいです。 アプリの実行に必要なバイナリとコンテンツのみが、コンテナーにコピーされます。 コンテンツは実行できる状態になっており、
docker run
からアプリの起動までを最速で行うことができます。 動的コード コンパイルは Docker モデルで必要ありません。
前提条件
サンプル アプリ をダウンロードする
.NET Docker リポジトリを複製して、サンプルをダウンロードします。
git clone https://github.com/dotnet/dotnet-docker
アプリをローカルで実行する
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
次のコマンドを実行し、アプリをビルドしてローカルで実行します。
dotnet run
アプリをテストするには、ブラウザーで
http://localhost:<port>
に移動します。コマンド プロンプト上で Ctrl +C キーを押して、アプリを停止します。
Linux コンテナーまたは Windows コンテナーで実行する
Linux コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Linux containers](Linux コンテナーへの切り替え) を選択します。
Windows コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Windows containers](Windows コンテナーへの切り替え) を選択します。
dotnet-docker/samples/aspnetapp にある Dockerfile フォルダーに移動します。
次のコマンドを実行して、Docker 内でサンプルをビルドして実行します。
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
build
コマンドの引数:- イメージに aspnetapp という名前を付けます。
- 現在のフォルダー内にある Dockerfile を探します (末尾にピリオド)。
実行コマンドの引数:
- 擬似端末を割り当てて、接続されていない場合でも開いた状態を保持します。 (
--interactive --tty
と効果は同じです。) - コンテナーが存在する場合は、自動的に削除します。
- ローカル コンピューター上の
<port>
をコンテナー内のポート 8080 にマップします。 - コンテナーに aspnetcore_sample という名前を付けます。
- aspnetapp イメージを指定します。
アプリをテストするには、ブラウザーで
http://localhost:<port>
に移動します。
手動でビルドしてデプロイする
一部のシナリオでは、実行時に必要なアプリのアセットをコピーすることで、アプリをコンテナーにデプロイする方がよい場合があります。 このセクションでは、手動によるデプロイの方法を示します。
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
dotnet publish コマンドを実行します。
dotnet publish -c Release -o published
コマンドの引数:
- リリース モードでアプリをビルドします (既定はデバッグ モードです)。
- published フォルダーにアセットを作成します。
アプリを実行します。
Windows の場合:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
http://localhost:<port>
を参照して home ページを確認します。
Docker コンテナー内で手動で発行されたアプリを使用するには、新しい Dockerfile を作成し、docker build .
コマンドを使用してイメージをビルドします。
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
新しいイメージを確認するには、docker images
コマンドを使用します。
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
前の Dockerfile では、*.csproj
ファイルは別個の "レイヤー" としてコピーおよび復元されます。 docker build
コマンドを使用してイメージをビルドすると、組み込みのキャッシュが使用されます。 docker build
コマンドが最後に実行されてから *.csproj
ファイルが変更されていない場合、dotnet restore
コマンドを再度実行する必要はありません。 代わりに、対応する dotnet restore
レイヤーの組み込みキャッシュが再利用されます。 詳細については、「Dockerfile を記述するためのベスト プラクティス」を参照してください。
その他の技術情報
- dotnet publish を使用して .NET アプリをコンテナー化する
- Docker の build コマンド
- Docker の run コマンド
- ASP.NET Core の Docker サンプル (このチュートリアルで使用されたものです。)
- プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する
- Visual Studio Docker ツールの使用
- Visual Studio Code でのデバッグ
- ドッカーと小さなコンテナを使用した GC
- System.IO.IOException: inotify インスタンスの数に対する構成済みのユーザー制限 (128) に到達
- Docker イメージの更新
次のステップ
同じアプリを格納している Git リポジトリにも、ドキュメントが用意されています。 リポジトリ内にある利用可能なリソースの概要については、README ファイルをご覧ください。 特に、HTTPS を実装する方法について確認してください。
ASP.NET Core の Docker イメージ
このチュートリアルでは、ASP.NET Core サンプル アプリをダウンロードして、Docker コンテナー内で実行します。 このサンプルは Linux コンテナーと Windows コンテナーのどちらでも動作します。
さまざまなコンテナー内でビルドして実行するために、サンプルの Dockerfile では Docker のマルチステージ ビルド機能を使用しています。 ビルドと実行のコンテナーは、マイクロソフトが Docker Hub に提供しているイメージから作成されます。
dotnet/sdk
サンプルでは、アプリをビルドするためにこのイメージを使用します。 イメージには、コマンド ライン ツール (CLI) が組み込まれた .NET SDK が含まれています。 イメージはローカル開発、デバッグ、および単体テスト用に最適化されています。 開発とコンパイルのためにツールがインストールされているため、比較的大きなイメージになっています。
dotnet/aspnet
サンプルでは、アプリを実行するためにこのイメージを使用します。 イメージには ASP.NET Core ランタイムとライブラリが含まれており、実稼働環境でアプリを実行するために最適化されています。 デプロイとアプリ起動の速度に対応した設計になっており、Docker レジストリから Docker ホストへのネットワーク パフォーマンスが最適化されていることから、イメージは比較的小さいです。 アプリの実行に必要なバイナリとコンテンツのみが、コンテナーにコピーされます。 コンテンツは実行できる状態になっており、
docker run
からアプリの起動までを最速で行うことができます。 動的コード コンパイルは Docker モデルで必要ありません。
必須コンポーネント
サンプル アプリ をダウンロードする
.NET Docker リポジトリを複製して、サンプルをダウンロードします。
git clone https://github.com/dotnet/dotnet-docker
アプリをローカルで実行する
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
次のコマンドを実行し、アプリをビルドしてローカルで実行します。
dotnet run
アプリをテストするには、ブラウザーで
http://localhost:5000
に移動します。コマンド プロンプト上で Ctrl +C キーを押して、アプリを停止します。
Linux コンテナーまたは Windows コンテナーで実行する
Linux コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Linux containers](Linux コンテナーへの切り替え) を選択します。
Windows コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Windows containers](Windows コンテナーへの切り替え) を選択します。
dotnet-docker/samples/aspnetapp にある Dockerfile フォルダーに移動します。
次のコマンドを実行して、Docker 内でサンプルをビルドして実行します。
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
build
コマンドの引数:- イメージに aspnetapp という名前を付けます。
- 現在のフォルダー内にある Dockerfile を探します (末尾にピリオド)。
実行コマンドの引数:
- 擬似端末を割り当てて、接続されていない場合でも開いた状態を保持します。 (
--interactive --tty
と効果は同じです。) - コンテナーが存在する場合は、自動的に削除します。
- ローカル コンピューター上のポート 5000 をコンテナー内のポート 80 にマップします。
- コンテナーに aspnetcore_sample という名前を付けます。
- aspnetapp イメージを指定します。
アプリをテストするには、ブラウザーで
http://localhost:5000
に移動します。
手動でビルドしてデプロイする
一部のシナリオでは、実行時に必要なアプリのアセットをコピーすることで、アプリをコンテナーにデプロイする方がよい場合があります。 このセクションでは、手動によるデプロイの方法を示します。
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
dotnet publish コマンドを実行します。
dotnet publish -c Release -o published
コマンドの引数:
- リリース モードでアプリをビルドします (既定はデバッグ モードです)。
- published フォルダーにアセットを作成します。
アプリを実行します。
Windows の場合:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
http://localhost:5000
を参照してhome ページを確認します。
Docker コンテナー内で手動で発行されたアプリを使用するには、新しい Dockerfile を作成し、docker build .
コマンドを使用してイメージをビルドします。
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
新しいイメージを確認するには、docker images
コマンドを使用します。
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
前の Dockerfile では、*.csproj
ファイルは別個の "レイヤー" としてコピーおよび復元されます。 docker build
コマンドを使用してイメージをビルドすると、組み込みのキャッシュが使用されます。 docker build
コマンドが最後に実行されてから *.csproj
ファイルが変更されていない場合、dotnet restore
コマンドを再度実行する必要はありません。 代わりに、対応する dotnet restore
レイヤーの組み込みキャッシュが再利用されます。 詳細については、「Dockerfile を記述するためのベスト プラクティス」を参照してください。
その他の技術情報
- dotnet publish を使用して .NET アプリをコンテナー化する
- Docker の build コマンド
- Docker の run コマンド
- ASP.NET Core の Docker サンプル (このチュートリアルで使用されたものです。)
- プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する
- Visual Studio Docker ツールの使用
- Visual Studio Code でのデバッグ
- ドッカーと小さなコンテナを使用した GC
- System.IO.IOException: inotify インスタンスの数に対する構成済みのユーザー制限 (128) に到達
- Docker イメージの更新
次のステップ
同じアプリを格納している Git リポジトリにも、ドキュメントが用意されています。 リポジトリ内にある利用可能なリソースの概要については、README ファイルをご覧ください。 特に、HTTPS を実装する方法について確認してください。
ASP.NET Core の Docker イメージ
このチュートリアルでは、ASP.NET Core サンプル アプリをダウンロードして、Docker コンテナー内で実行します。 このサンプルは Linux コンテナーと Windows コンテナーのどちらでも動作します。
さまざまなコンテナー内でビルドして実行するために、サンプルの Dockerfile では Docker のマルチステージ ビルド機能を使用しています。 ビルドと実行のコンテナーは、マイクロソフトが Docker Hub に提供しているイメージから作成されます。
dotnet/sdk
サンプルでは、アプリをビルドするためにこのイメージを使用します。 イメージには、コマンド ライン ツール (CLI) が組み込まれた .NET SDK が含まれています。 イメージはローカル開発、デバッグ、および単体テスト用に最適化されています。 開発とコンパイルのためにツールがインストールされているため、比較的大きなイメージになっています。
dotnet/core/sdk
サンプルでは、アプリをビルドするためにこのイメージを使用します。 イメージには、コマンド ライン ツール (CLI) が組み込まれた .NET Core SDK が含まれています。 イメージはローカル開発、デバッグ、および単体テスト用に最適化されています。 開発とコンパイルのためにツールがインストールされているため、比較的大きなイメージになっています。
dotnet/aspnet
サンプルでは、アプリを実行するためにこのイメージを使用します。 イメージには ASP.NET Core ランタイムとライブラリが含まれており、実稼働環境でアプリを実行するために最適化されています。 デプロイとアプリ起動の速度に対応した設計になっており、Docker レジストリから Docker ホストへのネットワーク パフォーマンスが最適化されていることから、イメージは比較的小さいです。 アプリの実行に必要なバイナリとコンテンツのみが、コンテナーにコピーされます。 コンテンツは実行できる状態になっており、
docker run
からアプリの起動までを最速で行うことができます。 動的コード コンパイルは Docker モデルで必要ありません。
dotnet/core/aspnet
サンプルでは、アプリを実行するためにこのイメージを使用します。 イメージには ASP.NET Core ランタイムとライブラリが含まれており、実稼働環境でアプリを実行するために最適化されています。 デプロイとアプリ起動の速度に対応した設計になっており、Docker レジストリから Docker ホストへのネットワーク パフォーマンスが最適化されていることから、イメージは比較的小さいです。 アプリの実行に必要なバイナリとコンテンツのみが、コンテナーにコピーされます。 コンテンツは実行できる状態になっており、
docker run
からアプリの起動までを最速で行うことができます。 動的コード コンパイルは Docker モデルで必要ありません。
必須コンポーネント
サンプル アプリ をダウンロードする
.NET Docker リポジトリを複製して、サンプルをダウンロードします。
git clone https://github.com/dotnet/dotnet-docker
アプリをローカルで実行する
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
次のコマンドを実行し、アプリをビルドしてローカルで実行します。
dotnet run
アプリをテストするには、ブラウザーで
http://localhost:5000
に移動します。コマンド プロンプト上で Ctrl +C キーを押して、アプリを停止します。
Linux コンテナーまたは Windows コンテナーで実行する
Linux コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Linux containers](Linux コンテナーへの切り替え) を選択します。
Windows コンテナーで実行するには、システム トレイの Docker クライアント アイコンを右クリックし、[switch to Windows containers](Windows コンテナーへの切り替え) を選択します。
dotnet-docker/samples/aspnetapp にある Dockerfile フォルダーに移動します。
次のコマンドを実行して、Docker 内でサンプルをビルドして実行します。
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
build
コマンドの引数:- イメージに aspnetapp という名前を付けます。
- 現在のフォルダー内にある Dockerfile を探します (末尾にピリオド)。
実行コマンドの引数:
- 擬似端末を割り当てて、接続されていない場合でも開いた状態を保持します。 (
--interactive --tty
と効果は同じです。) - コンテナーが存在する場合は、自動的に削除します。
- ローカル コンピューター上のポート 5000 をコンテナー内のポート 80 にマップします。
- コンテナーに aspnetcore_sample という名前を付けます。
- aspnetapp イメージを指定します。
アプリをテストするには、ブラウザーで
http://localhost:5000
に移動します。
手動でビルドしてデプロイする
一部のシナリオでは、実行時に必要なアプリのアセットをコピーすることで、アプリをコンテナーにデプロイする方がよい場合があります。 このセクションでは、手動によるデプロイの方法を示します。
dotnet-docker/samples/aspnetapp/aspnetapp にあるプロジェクト フォルダーに移動します。
dotnet publish コマンドを実行します。
dotnet publish -c Release -o published
コマンドの引数:
- リリース モードでアプリをビルドします (既定はデバッグ モードです)。
- published フォルダーにアセットを作成します。
アプリを実行します。
Windows の場合:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
http://localhost:5000
を参照してhome ページを確認します。
Docker コンテナー内で手動で発行されたアプリを使用するには、新しい Dockerfile を作成し、docker build .
コマンドを使用してイメージをビルドします。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
新しいイメージを確認するには、docker images
コマンドを使用します。
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
新しいイメージを確認するには、docker images
コマンドを使用します。
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
前の Dockerfile では、*.csproj
ファイルは別個の "レイヤー" としてコピーおよび復元されます。 docker build
コマンドを使用してイメージをビルドすると、組み込みのキャッシュが使用されます。 docker build
コマンドが最後に実行されてから *.csproj
ファイルが変更されていない場合、dotnet restore
コマンドを再度実行する必要はありません。 代わりに、対応する dotnet restore
レイヤーの組み込みキャッシュが再利用されます。 詳細については、「Dockerfile を記述するためのベスト プラクティス」を参照してください。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
前の Dockerfile で示されているように、*.csproj
ファイルは別個の "レイヤー" としてコピーおよび復元されます。 docker build
コマンドを使用してイメージをビルドすると、組み込みのキャッシュが使用されます。 docker build
コマンドが最後に実行されてから *.csproj
ファイルが変更されていない場合、dotnet restore
コマンドを再度実行する必要はありません。 代わりに、対応する dotnet restore
レイヤーの組み込みキャッシュが再利用されます。 詳細については、「Dockerfile を記述するためのベスト プラクティス」を参照してください。
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dockerfile
ここに示すのは、先ほど実行した docker build
コマンドで使用された Dockerfile です。 このセクションで実行したときと同じ方法で dotnet publish
を使用して、ビルドとデプロイを行います。
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
前の Dockerfile では、*.csproj
ファイルは別個の "レイヤー" としてコピーおよび復元されます。 docker build
コマンドを使用してイメージをビルドすると、組み込みのキャッシュが使用されます。 docker build
コマンドが最後に実行されてから *.csproj
ファイルが変更されていない場合、dotnet restore
コマンドを再度実行する必要はありません。 代わりに、対応する dotnet restore
レイヤーの組み込みキャッシュが再利用されます。 詳細については、「Dockerfile を記述するためのベスト プラクティス」を参照してください。
その他の技術情報
- dotnet publish を使用して .NET アプリをコンテナー化する
- Docker の build コマンド
- Docker の run コマンド
- ASP.NET Core の Docker サンプル (このチュートリアルで使用されたものです。)
- プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する
- Visual Studio Docker ツールの使用
- Visual Studio Code でのデバッグ
- ドッカーと小さなコンテナを使用した GC
- System.IO.IOException: inotify インスタンスの数に対する構成済みのユーザー制限 (128) に到達
次の手順
同じアプリを格納している Git リポジトリにも、ドキュメントが用意されています。 リポジトリ内にある利用可能なリソースの概要については、README ファイルをご覧ください。 特に、HTTPS を実装する方法について確認してください。
ASP.NET Core