paint-brush
Docker イメージから Azure に ASP.NET Core Web アプリをデプロイする方法by@igorlopushko
998
998

Docker イメージから Azure に ASP.NET Core Web アプリをデプロイする方法

Igor Lopushko6m2024/01/19
Read on Terminal Reader

この記事では、単純な ASP.NET Core Web アプリケーションを作成する方法、アプリケーションで Docker イメージを作成する方法、およびそれを Azure にデプロイする最も簡単な方法に関する詳細なガイドを提供します。最終的には、Web アプリケーションをデプロイし、世界中からアクセスできるようにする方法をよく理解できるようになります。
featured image - Docker イメージから Azure に ASP.NET Core Web アプリをデプロイする方法
Igor Lopushko HackerNoon profile picture

導入

Web 開発者として、私たちはアプリケーションのデプロイと保守が複雑になりながら、アプリケーションに適切なホスティングを見つけていました。しかし今、私たちはクラウドプロバイダーがほとんどコストをかけずに多くのものを作ってくれる新しい時代に生きています。 .NET 開発者にとって、Web アプリケーションをホストするには Microsoft Azure が最も自然な選択肢と言えます。


Docker は、アプリケーションを実行しているプラットフォームや環境からの抽象化を可能にするもう 1 つのテクノロジーです。


この記事では、単純な ASP.NET Core Web アプリケーションを作成する方法、アプリケーションで Docker イメージを作成する方法、およびそれを Azure にデプロイする最も簡単な方法に関する詳細なガイドを提供します。最終的には、Web アプリケーションをデプロイし、世界中からアクセスできるようにする方法をよく理解できるようになります。

1. ASP.NET Core Web アプリを作成する

この記事では開発のために JetBrains Rider を使用します。ただし、必要なツールは何でも使用できます。


まず、新しいプロジェクトを作成する必要があります。これを単純な「 webapp 」と呼びましょう。

新しいソリューションを作成する


新しいプロジェクトを作成すると、次のようになります。

プロジェクトの構造


2. Docker イメージの作成

プロジェクトに変更を加えずに、 Dockerfileに焦点を当てます。次の例のように変更します。

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


HTTP 経由で Docker コンテナに接続できるようにするには、 EXPOSE 8080およびENV ASPNETCORE_URLS http://+:8080の行に注意する必要があります。


コマンド ラインから Docker イメージをビルドします。 webappプロジェクト ディレクトリに移動し、次のコマンドを実行する必要があります。

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Mac M1 で実行していますが、Azure デプロイメントと互換性を持たせるために--platformパラメーターを明示的に指定する必要があります。また、別のアーキテクチャ用のイメージをビルドできるように、 DOCKER_BUILDKIT=1パラメーターを指定し、 buildxを使用して Docker Buildkit をアクティブにする必要があります。


Intel x86/x64 プラットフォームで実行している場合は、 --platformパラメーターを指定してbuildxをアクティブ化することなく、 docker buildコマンドを使用できます。


イメージに別のタグを付けることもできますが、Docker Hub を使用するので、イメージ タグdrmoz/webapp:latestの一部としてアカウント名drmozを指定する必要があります。


イメージがビルドされたら、次のコマンドを実行して、そのイメージが Docker に存在するかどうかを確認できます。

 docker images


それはリストにあるはずです:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Docker コンテナを実行して、新しく作成したイメージが正常に動作することを確認してみましょう。 docker runコマンドを実行してコンテナを起動します。

 docker run -p 5555:8080 drmoz/webapp:latest


-pパラメーターを指定して、コンテナー内の8080ポートをローカル マシンの5555ポートにマップします。また、イメージ名を指定してコンテナを作成します。私の場合、それはdrmoz/webapp:latestです。


これで、ブラウザーhttp://localhost:5555に移動して、ASP.NET Core Web アプリのホーム ページを表示できるようになります。

ASP.NET Core Web アプリ: ホーム ページ



イメージをDocker Hubにプッシュする必要があります。その前に、Docker レジストリに登録し、リポジトリを作成する必要があります。ホームページの右隅にある「リポジトリの作成」ボタンをクリックします。

Docker Hub の新しいリポジトリ


Repository Nameフィールドを指定し、リポジトリの可視性をPublicのままにします。


コマンド ラインで、Docker Hub レジストリにログインする必要があります。

 docker login


その後、新しく作成したイメージをレジストリにプッシュできるようになります。

 docker push drmoz/webapp:latest


リポジトリに移動すると、イメージに関する情報が表示されます。

Docker Hub リポジトリ


3. Azure で Web アプリを作成する

これで、ASP.NET Core Web アプリケーションを Azure にデプロイする準備が整いました。 Azure Portal にログインし、新しいリソース グループを作成しましょう。リソース グループ名を「 webapp-rg 」と指定し、「確認と作成」ボタンをクリックします。


リソース グループの作成: [基本] タブ


次の画面で、「作成」ボタンを押すだけです。

リソース グループの作成: [確認と作成] タブ


これで、Web アプリを作成できます。 「リソースの作成」ページに移動し、WebApp を見つけます。 「作成」ボタンをクリックします。

Web アプリの作成: [基本] タブ

以前に作成したResource Groupを指定する必要があります。また、Web アプリの一意のNameを指定します。 Publishフィールドで「Docker コンテナ」を選択します。後で、使用する Docker イメージを指定できるようになります。


Pricing plansセクションで適切なオプションを選択しますが、テスト目的には無料の F1タイヤを使用することをお勧めします。 「Docker」タブに移動します。


Web アプリの作成: [Docker] タブ


このタブのImage Sourceフィールドで [Docker Hub] を選択します。 [ Access Type ] フィールドで [パブリック] を選択し、Docker Hub にプッシュしたイメージの名前を使用してImage and tag値を指定します。 「レビューと作成」タブに移動します。このタブで、「作成」ボタンをクリックします。

Web アプリの作成: [レビュー + 作成] タブ


新しいリソースがデプロイされると、このリソースに移動するかどうかを尋ねられます。やるだけ。 Webアプリに関する情報が表示されます。

Web アプリのリソース情報


「参照」ボタンをクリックして、デプロイされた Web アプリケーションを開きます。すべてが正常に完了した場合は、 http://localhost:5555に移動すると、ブラウザーで表示されたものと同様の ASP.NET Core Web アプリのホーム ページが表示されるはずです。

継続的展開を有効にする

「デプロイ センター」設定に移動して「デプロイの続行」を有効にすると、新しいイメージを Docker Hub にプッシュするたびにイメージを再デプロイできるようになります。このようにして、コードに変更を加え、新しいイメージを使用して Docker Hub にプッシュすると、Azure で数分で変更を確認できます。

Web アプリ - 導入センター

Azure Web アプリのトラブルシューティング

デプロイ ログを表示して問題を特定できるようにするには、次のように「App Service ログ」の章でファイル システムへのログの保存を有効にする必要があります。

Web アプリ - App Service ログ


完了すると、次のように「展開センター」に移動してログを確認できます。

Web アプリ - 導入センター


まとめ

この時点まで到達すると、ASP.NET Core Web アプリケーションを作成できたことになります。それを Docker イメージにパックし、Azure にデプロイします。今日、テクノロジーにより生活が楽になり、開発プロセスがスピードアップされています。アプリケーションをクラウド プロバイダーにデプロイして全世界に公開し、テストを実行して、作業の結果を確認することがいかに簡単にできるかを確認できます。


Microsoft のドキュメントを使用して、Azure クラウド プロバイダーの詳細を詳しく調べることができます。また、このテクノロジーについてより深く理解するには、Docker のドキュメントも参照してください。参考になれば幸いです。