GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerで.NETアプリを実行する方法

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の操作に関するガイドをご覧ください。


Docker
  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. Dockerコンテナを接続する方法

  3. DockerコンテナでMySQLを実行する方法

  1. DockerRunを使用してエントリポイントをオーバーライドする方法

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. UbuntuでDockerをインストールしてDockerコンテナを実行する方法

  1. DockerでRedisをデプロイして実行する方法

  2. RaspberryPiにDockerをインストールする方法

  3. Dockerのパフォーマンスを最適化する方法