アプリ ディレクトリのコードを使用してアプリに Azure Developer CLI のサポートを追加する

Azure Developer CLI (azd) には、アプリで使用するテンプレートを初期化するための次の 2 つの異なるワークフローが用意されています。

  • 現在のディレクトリでコードを使用する: この方法では、アプリを分析し、サポートされているインフラストラクチャと構成リソースを自動生成します。
  • テンプレートを選択: この方法では、既存のテンプレートをアプリと統合したり、既存のテンプレートを新しいアプリの開始点として使用したりできます。

どちらの方法も、 Azure Developer CLI テンプレートの概要 ドキュメントで確認できます。

この記事では、現在のディレクトリのコードを使用するアプローチを使用して、Azure Developer CLI (azd) のサポートをアプリに追加する方法について説明します。 既存のテンプレートを使用したアプリへのazdサポートの追加別の方法の詳細については、ドキュメントを参照してください。 azd テンプレートの構築の詳細についてはトレーニング - azd テンプレートのビルドとデプロイに関するページを参照してください。

現在のディレクトリでコードを使用する

  1. 独自のプロジェクトを使用して、先に進む手順に従うことができます。 ただし、サンプル アプリケーションを使用する場合は、次のスターター リポジトリをコンピューター上の空のディレクトリに複製します。

    git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
    
  2. プロジェクトのルート ディレクトリのターミナルを開きます。

  3. azd init コマンドを実行してテンプレートを初期化します。

    azd init
    
  4. メッセージが表示されたら、 現在のディレクトリ内のコードを使用するオプションを選択azd はプロジェクトを分析し、検出されたサービスと推奨される Azure ホスティング リソースの概要を提供します。

  5. [Confirm and continue initializing my app] を選びます。 azd は、プロジェクトのルート ディレクトリに次の資産を生成します。

    • 適切なサービス定義を含む azure.yaml ファイル。
    • プロジェクトをプロビジョニングして Azure にデプロイするためのコードとしてのインフラストラクチャ ファイルを含む infra フォルダー。
    • .env ファイルに環境変数が設定された.azure フォルダー。

    この検出と生成プロセスの詳細については、この記事の後半で説明します。

  6. 生成されたファイルは、提供されたサンプル アプリに対してもそのまま動作し、独自のアプリでも使用できます。 必要に応じて、生成されたファイルをニーズに合わせて変更できます。 たとえば、アプリが azd によって識別されたリソース以外の Azure リソースに依存している場合は、infra フォルダー内のコードとしてのインフラストラクチャ ファイルをさらに変更する必要がある場合があります。

  7. azd up コマンドを実行して、アプリをプロビジョニングして Azure にデプロイします。

    azd up
    
  8. メッセージが表示されたら、目的のサブスクリプションと場所を選択して、プロビジョニングとデプロイのプロセスを開始します。

  9. プロセスが完了したら、 azd 出力のリンクをクリックして、ブラウザーでアプリを開きます。

初期化手順を調べる

現在のディレクトリでコードを使用する ワークフローを選択すると、azd init コマンドによってプロジェクトが分析され、検出された内容に基づいてコードが自動生成されます。 以下のセクションでは、このプロセスのしくみと、現在サポートされているテクノロジの詳細について説明します。

検出

azd init コマンドは、プロジェクト ディレクトリとサブディレクトリにあるサポートされている言語のプロジェクト ファイルを検出します。 azd また、パッケージの依存関係をスキャンして、アプリが使用する Web フレームワークまたはデータベースに関する情報を収集します。 必要に応じて、確認の概要プロンプトに示されているように、検出されたコンポーネントを手動で追加または編集できます。

現在の検出ロジックは次のとおりです。

  • サポートされている言語:
    • Python
    • JavaScript/TypeScript
    • .NET
    • Java
  • サポートされているデータベース:
    • MongoDB
    • PostgreSQL
  • Python と JavaScript/TypeScript では、Web フレームワークとデータベースが自動的に検出されます。
  • JavaScript/TypeScript プロジェクトがフロントエンド (またはクライアント側) の Web フレームワークを使用する場合は、フロントエンド サービスとして分類されます。 サービスで現在検出されていないフロントエンド Web フレームワークを使用している場合は、JQuery を選択して同等のフロントエンド サービスの分類と動作を提供できます。

世代

検出されたコンポーネントを確認した後、 azd init は、アプリケーションを Azure にデプロイするために必要なコードとしてのインフラストラクチャ ファイルを生成します。

生成ロジックは次のとおりです。

  • サポートされているホスト:
    • Azure Container Apps。
  • データベースの場合、データベース テクノロジとサービスの間でサポートされているマッピングが使用されます。
    • MongoDB: MongoDB 用 Azure CosmosDB API
    • PostgreSQL: Azure Database for PostgreSQL フレキシブル サーバー
    • Redis: Azure Container Apps Redis アドオン
  • データベースを使用するサービスには、既定で事前構成されたデータベースへの接続を提供する環境変数があります。
  • フロントエンド サービスとバックエンド サービスの両方が検出されると、バックエンド サービスに対する Azure ホスト上の CORS 構成が更新され、フロントエンド サービスの既定のホスティング ドメインが許可されます。 これは、コード構成ファイルとしてのインフラストラクチャで必要に応じて変更または削除できます。

開発コンテナーのサポートを追加する

また、テンプレートを開発コンテナーや Codespaces と互換性のあるものにすることもできます。 開発コンテナーを使用すると、コンテナーをフル機能の開発環境として使用できます。 これはアプリケーションの実行、コードベースの操作に必要なツール、ライブラリ、またはランタイムの分離、継続的インテグレーションとテストの支援に使用できます。 開発コンテナーは、プライベート クラウドまたはパブリック クラウドでローカルまたはリモートで実行できます。 (ソース: https://containers.dev/)

開発コンテナーのサポートを追加するには:

  1. プロジェクトのルートに .devcontainer フォルダーを作成します。

  2. 目的の構成を使用して、.devcontainer フォルダー内にdevcontainer.json ファイルを作成します。 azd スターター テンプレートには、プロジェクトにコピーして必要に応じて変更できるサンプル devcontainer.json ファイルが用意されています。

開発コンテナーを使用した 作業の詳細については Visual Studio Code のドキュメントを参照してください。

CI/CD パイプラインのサポートを追加する

次の手順を使用して、GitHub アクションまたは Azure DevOps を使用して、テンプレートに CI/CD のサポートを追加することもできます。

  1. GitHub アクション用の .github フォルダー、または Azure DevOps 用の .ado フォルダーをプロジェクトのルートに追加します。

  2. ワークフロー ファイルを新しいフォルダーに追加します。 azd スターター テンプレートには、プロジェクトにコピーして必要に応じて変更できるプラットフォームごとにサンプル GitHub Actions ワークフロー ファイルSample Azure DevOps Pipelines ファイルが用意されています。

  3. また、ワークフローを実行するために必要な環境変数を使用して、infra フォルダー内のmain.parameters.json ファイルを更新する必要がある場合もあります。