導入 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 デプロイメントと互換性を持たせるために パラメーターを明示的に指定する必要があります。また、別のアーキテクチャ用のイメージをビルドできるように、 パラメーターを指定し、 を使用して Docker Buildkit をアクティブにする必要があります。 --platform DOCKER_BUILDKIT=1 buildx 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 これで、ブラウザー に移動して、ASP.NET Core Web アプリのホーム ページを表示できるようになります。 http://localhost:5555 イメージを にプッシュする必要があります。その前に、Docker レジストリに登録し、リポジトリを作成する必要があります。ホームページの右隅にある「 」ボタンをクリックします。 Docker Hub リポジトリの作成 フィールドを指定し、リポジトリの可視性を のままにします。 Repository Name Public コマンド ラインで、Docker Hub レジストリにログインする必要があります。 docker login その後、新しく作成したイメージをレジストリにプッシュできるようになります。 docker push drmoz/webapp:latest リポジトリに移動すると、イメージに関する情報が表示されます。 3. Azure で Web アプリを作成する これで、ASP.NET Core Web アプリケーションを Azure にデプロイする準備が整いました。 Azure Portal にログインし、新しいリソース グループを作成しましょう。リソース グループ名を「 」と指定し、「確認と作成」ボタンをクリックします。 webapp-rg 次の画面で、「作成」ボタンを押すだけです。 これで、Web アプリを作成できます。 「リソースの作成」ページに移動し、WebApp を見つけます。 「作成」ボタンをクリックします。 以前に作成した を指定する必要があります。また、Web アプリの一意の を指定します。 フィールドで「Docker コンテナ」を選択します。後で、使用する Docker イメージを指定できるようになります。 Resource Group Name Publish セクションで適切なオプションを選択しますが、テスト目的には タイヤを使用することをお勧めします。 「Docker」タブに移動します。 Pricing plans 無料の F1 このタブの フィールドで [Docker Hub] を選択します。 [ ] フィールドで [パブリック] を選択し、Docker Hub にプッシュしたイメージの名前を使用して 値を指定します。 「レビューと作成」タブに移動します。このタブで、「作成」ボタンをクリックします。 Image Source Access Type Image and tag 新しいリソースがデプロイされると、このリソースに移動するかどうかを尋ねられます。やるだけ。 Webアプリに関する情報が表示されます。 「参照」ボタンをクリックして、デプロイされた Web アプリケーションを開きます。すべてが正常に完了した場合は、 に移動すると、ブラウザーで表示されたものと同様の ASP.NET Core Web アプリのホーム ページが表示されるはずです。 http://localhost:5555 継続的展開を有効にする 「デプロイ センター」設定に移動して「デプロイの続行」を有効にすると、新しいイメージを Docker Hub にプッシュするたびにイメージを再デプロイできるようになります。このようにして、コードに変更を加え、新しいイメージを使用して Docker Hub にプッシュすると、Azure で数分で変更を確認できます。 Azure Web アプリのトラブルシューティング デプロイ ログを表示して問題を特定できるようにするには、次のように「App Service ログ」の章でファイル システムへのログの保存を有効にする必要があります。 完了すると、次のように「展開センター」に移動してログを確認できます。 まとめ この時点まで到達すると、ASP.NET Core Web アプリケーションを作成できたことになります。それを Docker イメージにパックし、Azure にデプロイします。今日、テクノロジーにより生活が楽になり、開発プロセスがスピードアップされています。アプリケーションをクラウド プロバイダーにデプロイして全世界に公開し、テストを実行して、作業の結果を確認することがいかに簡単にできるかを確認できます。 Microsoft の を使用して、Azure クラウド プロバイダーの詳細を詳しく調べることができます。また、このテクノロジーについてより深く理解するには、Docker の も参照してください。参考になれば幸いです。 ドキュメント ドキュメント