アプリ ディレクトリのコードを使用してアプリに Azure Developer CLI のサポートを追加する
Azure Developer CLI (azd
) には、アプリで使用するテンプレートを初期化するための次の 2 つの異なるワークフローが用意されています。
- 現在のディレクトリでコードを使用する: この方法では、アプリを分析し、サポートされているインフラストラクチャと構成リソースを自動生成します。
- テンプレートを選択: この方法では、既存のテンプレートをアプリと統合したり、既存のテンプレートを新しいアプリの開始点として使用したりできます。
どちらの方法も、 Azure Developer CLI テンプレートの概要 ドキュメントで確認できます。
この記事では、現在のディレクトリのコードを使用するアプローチを使用して、Azure Developer CLI (azd
) のサポートをアプリに追加する方法について説明します。 既存のテンプレートを使用したアプリへのazd
サポートの追加別の方法の詳細については、ドキュメントを参照してください。 azd
テンプレートの構築の詳細についてはトレーニング - azd
テンプレートのビルドとデプロイに関するページを参照してください。
現在のディレクトリでコードを使用する
独自のプロジェクトを使用して、先に進む手順に従うことができます。 ただし、サンプル アプリケーションを使用する場合は、次のスターター リポジトリをコンピューター上の空のディレクトリに複製します。
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
プロジェクトのルート ディレクトリのターミナルを開きます。
azd init
コマンドを実行してテンプレートを初期化します。azd init
メッセージが表示されたら、 現在のディレクトリ内のコードを使用するオプションを選択。
azd
はプロジェクトを分析し、検出されたサービスと推奨される Azure ホスティング リソースの概要を提供します。[Confirm and continue initializing my app] を選びます。
azd
は、プロジェクトのルート ディレクトリに次の資産を生成します。- 適切なサービス定義を含む
azure.yaml
ファイル。 - プロジェクトをプロビジョニングして Azure にデプロイするためのコードとしてのインフラストラクチャ ファイルを含む
infra
フォルダー。 .env
ファイルに環境変数が設定された.azure
フォルダー。
この検出と生成プロセスの詳細については、この記事の後半で説明します。
- 適切なサービス定義を含む
生成されたファイルは、提供されたサンプル アプリに対してもそのまま動作し、独自のアプリでも使用できます。 必要に応じて、生成されたファイルをニーズに合わせて変更できます。 たとえば、アプリが
azd
によって識別されたリソース以外の Azure リソースに依存している場合は、infra
フォルダー内のコードとしてのインフラストラクチャ ファイルをさらに変更する必要がある場合があります。azd up
コマンドを実行して、アプリをプロビジョニングして Azure にデプロイします。azd up
メッセージが表示されたら、目的のサブスクリプションと場所を選択して、プロビジョニングとデプロイのプロセスを開始します。
プロセスが完了したら、
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/)
開発コンテナーのサポートを追加するには:
プロジェクトのルートに .devcontainer フォルダーを作成します。
目的の構成を使用して、
.devcontainer
フォルダー内にdevcontainer.json
ファイルを作成します。azd
スターター テンプレートには、プロジェクトにコピーして必要に応じて変更できるサンプルdevcontainer.json
ファイルが用意されています。
開発コンテナーを使用した 作業の詳細については Visual Studio Code のドキュメントを参照してください。
CI/CD パイプラインのサポートを追加する
次の手順を使用して、GitHub アクションまたは Azure DevOps を使用して、テンプレートに CI/CD のサポートを追加することもできます。
GitHub アクション用の
.github
フォルダー、または Azure DevOps 用の.ado
フォルダーをプロジェクトのルートに追加します。ワークフロー ファイルを新しいフォルダーに追加します。
azd
スターター テンプレートには、プロジェクトにコピーして必要に応じて変更できるプラットフォームごとにサンプル GitHub Actions ワークフロー ファイルと Sample Azure DevOps Pipelines ファイルが用意されています。また、ワークフローを実行するために必要な環境変数を使用して、
infra
フォルダー内のmain.parameters.json
ファイルを更新する必要がある場合もあります。