Dockerはコンテナ化サービスであり、機能するために必要なすべての依存関係とコードがパッケージ化された分離環境でアプリケーションを実行するために使用されます。 Microsoftが提供するランタイムイメージを使用する.NETベースのプログラムを含む、あらゆる種類のアプリケーションを実行できます。
Dockerizing .NET
Microsoftは、.NETアプリケーションを実行するためのビルド済みのベースイメージを提供しています。アプリケーションが使用するバージョンの.NETのMicrosoftのベースイメージから簡単に拡張できるため、Dockerコンテナへの.NETランタイムまたはSDKのインストールを処理する必要はありません。
WindowsサーバーにWindowsコンテナーを展開する予定がない限り、.NETCoreまたは.NET5のいずれかを使用する必要があります。古い.NETFrameworkランタイムはクロスプラットフォームではなく、Linuxベースのコンテナーでは実行されません。
開発マシンにDockerがインストールされていない場合は、CLIにアクセスするためにDockerDesktopをインストールする必要があります。 WindowsでWSLを使用している場合は、パフォーマンスが向上するWSL2ベースのエンジンを有効にする必要があります。
テストするために、新しいASP.NETAPIアプリケーションを作成します。コンテナをビルドするたびにDockerがビルドを実行し、エントリポイントコマンドを使用してアプリケーションを起動するだけなので、同じ一般的な手順があらゆる種類のアプリケーションに適用されます。
Dockerfile
という名前の新しいファイルを作成します ソリューションが配置されているプロジェクトのルートにあります。次の構成で貼り付けます:
FROM mcr.microsoft.com/dotnet/core/sdk AS build-env WORKDIR /app # Copy csproj and restore COPY *.csproj ./ RUN dotnet restore # Copy everything else and build COPY . ./ RUN dotnet publish -o out # Build runtime image FROM mcr.microsoft.com/dotnet/core/runtime WORKDIR /app COPY --from=build-env /app/out . ENTRYPOINT ["dotnet", "DockerTest.dll"]
このDockerfileは、ビルドを実行するために.NETCoreSDKイメージをプルします。 .csproj
をコピーします オーバーして復元し、他のすべてをコピーしてビルドを実行します。次に、.NETランタイムイメージから新しいイメージをビルドし、ビルドアーティファクトをコピーします。
最後に、エントリポイントはここでdotnet DockerTest.dll
として定義されています。 。これにより、ASP.NET Webサーバーが起動しますが、アプリケーションのパラメーターを変更したり、まったく異なるエントリポイントコマンドを指定したりする必要がある場合があります。
docker container run
を使用してコンテナーをテスト実行できます。 、ビルドコンテナのIDで渡します:
docker container run containerid
ASP.NETアプリケーションの場合、ホストのポートをコンテナーのポートにマッピングしてポートを開く必要があります。
docker run -p 80:80 containerid
詳細については、DockerおよびDockerfilesの操作に関するガイドをご覧ください。