.NET WebAPIのDockerイメージを作成する方法

Dockerの主な利点の1つは、複雑な開発環境をセットアップしなくてもソフトウェアプロジェクトを実行できることです。

このガイドでは、.NET 5 WebAPIのDockerイメージを作成する方法を説明します。次に、イメージを使用して、Dockerがインストールされている任意のPCからバックエンドコードを実行し、フロントエンドWebプロジェクトまたはモバイルアプリからAPIを操作できます。

.NET 5 WebAPIの作成

Dockerと.NET5はどちらもオープンソースでクロスプラットフォームであるため、macOS、Windows、Linuxのいずれを使用していてもこのガイドに従うことができます。

dotnet CLIを使用して、次のコマンドでASP.NET WebAPIプロジェクトを作成します。

 dotnet new webapi -o aspdockerapi

上記のコマンドは、 aspdockerapiという名前のプロジェクトを作成し、同じ名前のフォルダーに配置します。さらに、アプリケーションは、いくつかのサンプルの天気予報データを使用してAPIコントローラーをスキャフォールディングします。

:PCに.NET 5がインストールされていない場合は、以下のリンクからダウンロードできます。

ダウンロード.NET 5 Windows、macOS、およびLinux用

プロジェクトが作成されたら、次のコマンドを使用してプロジェクトのルートフォルダーに移動できます。

 cd aspdockerapi

以下のコマンドを使用して、WebAPIを実行および提供できます。

 dotnet run

デフォルトでは、アプリケーションはポート5001で提供されます。アプリケーションのサンプルデータは、次のURLのブラウザで表示できます: https:// localhost:5001 / weatherforecastおよびAPIデータは次のようになります。

詳細: APIとは何ですか?

Dockerイメージ命令の作成

Dockerイメージを作成するには、DockerEngineにビルド方法に関する指示を与える必要があります。これらの命令は、 Dockerfileという名前のファイルに配置する必要があります。ファイルには拡張子が付いていないことに注意してください。

次のコマンドを使用して、アプリケーションプロジェクトのルートフォルダーにDockerfileを作成します。

 touch Dockerfile

Dockerfileを作成した後、プロジェクトのフォルダー構造は次のようになります。

次に、以下のコードをコピーしてDockerfileに貼り付けます。

 FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]

:上記のDockerfileでは、プロジェクト名とdll名はそれぞれaspdockerapi.csprojaspdockerapi.dllです。プロジェクトの名前が異なる場合は、Dockerfileを正しい名前で更新してください。

Dockerfile命令を理解する

Dockerfileは、主にDockerfileキーワードで構成されています。これらのキーワードは、慣例により大文字です。キーワードは、Dockerイメージの各レイヤーで実行する命令を指定します。以下は、上記のDockerfileが使用する主なDockerキーワードです。

1.FROM

FROMキーワードは、イメージを構築するベースイメージを指定します。上記のDockerfileでは、最初のベースイメージはMicrosoftの.NET5イメージです。 .NET 5ベースイメージには、アプリケーションの実行に必要なコンポーネントが含まれています。

2. WORKDIR

WORKDIRは、イメージ内の作業ディレクトリまたはコンテキストを設定します。この例では、次のステートメントWORKDIR / appを使用して、 / appディレクトリがデフォルトのルート作業ディレクトリとして割り当てられています。

3.コピー

COPYキーワードは、コンテンツを1つのフォルダーからコピーして、別のフォルダーに配置するだけです。この例では、最初にメインプロジェクトファイル、つまりaspdockerapiをコピーするために使用されます。 csprojを画像の作業ディレクトリに移動します。

4.実行

RUNキーワードは、Dockerイメージ内で特定のLinuxコマンドを実行するために使用されます。上記のDockerfileでは、 RUNコマンドを使用して、依存関係を復元し、ASP.NETプロジェクトをビルドし、プロジェクトを公開しています。

5.CMD

CMDキーワードは、上で説明したRUNキーワードに少し似ています。 Linuxコマンドの実行にも使用されますが、イメージを構築するためのコマンドを実行するRUNキーワードとは異なり、 CMDキーワードは、コンテナーインスタンスでイメージの開始時にLinuxコマンドを実行するために使用されます。

6.公開

EXPOSEキーワードは、Dockerイメージの内部のポートを外部に公開するために使用されます。この場合、イメージはポート80を公開します。これは、Dockerコンテナーの実行時にAPIを公開するために使用されます。

Dockerイメージの構築

Dockerfileに基づいてDockerイメージをビルドするには、プロジェクトのルートフォルダー、つまりDockerfileが配置されている場所で次のコマンドを実行するだけです。

 docker build -t dockerwebapi -f Dockerfile .

また、タグ名dockerwebapiとドッカーの画像と上記のコマンドは、このイメージを構築するための命令がDockerfileであることを指定します。

イメージのビルドが完了したら、次のコマンドを使用して、ローカルDockerイメージとしてリストされているかどうかを確認できます。

 docker images

上記のコマンドからの出力は以下のようになります。この場合、画像( dockerwebapi )が最初の行に表示されます。

PCにDockerがインストールされていない場合は、Ubuntu Linuxdockerをインストールする方法を説明します。それ以外の場合は、以下のリンクを使用してDockerをダウンロードしてインストールします。

ダウンロードDockerダウンロードおよびインストールガイド

Dockerイメージの実行

新しく作成されたDockerイメージを実行するには、次のコマンドを使用します。 -tiオプションは、イメージを対話型ターミナルモードで実行する必要があることを指定し、 -rmは、コンテナーが終了した直後に削除する必要があることを指定します。

 docker run -ti --rm -p 8080:80 dockerwebapi

また、このコマンドは、DockerコンテナをHTTPポート8080で実行する必要があることを指定します。このポートは、contianer内のポート80にマップされます。

ブラウザでURLhttp:// localhost:8080 / WeatherForecastに移動すると、実行中のDockerインスタンスから提供されているAPIデータが見つかります。

Dockerを使用する理由

このガイドでは、.NET 5 WebAPIのDockerイメージを作成する方法を説明しました。

Dockerを使用すると、アプリケーションのデプロイ方法を自動化し、ソフトウェア開発環境のセットアップを簡素化し、他のソフトウェアエンジニアとのコラボレーションを容易にすることができます。

Dockerには、他の仮想化テクノロジーに比べていくつかの利点もあります。そのため、ソフトウェアエンジニアリングプロジェクトでの使用を検討する必要があります。