使项目与 Azure 开发人员 CLI 兼容
Azure 开发人员 CLI (azd
) 使开发人员能够使用 GitHub 上托管的模板 为云搭建应用程序基架。 Microsoft 提供了 多个模板 来帮助你入门。 本文介绍如何使自己的应用程序 azd
兼容。
了解模板体系结构
下图简要概述了创建 azd
模板的过程:
所有 azd
模板都具有相同的文件结构,具体取决于 azd
约定。 以下层次结构显示了在本教程中生成的目录结构。
├── .azdo [ Configures an Azure Pipeline ]
├── .devcontainer [ For DevContainer ]
├── .github [ Configures a GitHub workflow ]
├── .vscode [ VS Code workspace configurations ]
├── .azure [ Stores Azure configurations and environment variables ]
├── infra [ Contains infrastructure as code files ]
│ ├── main.bicep/main.tf [ Main infrastructure file ]
│ ├── main.parameters.json/main.tfvars.json [ Parameters file ]
│ └── core/modules [ Contains reusable Bicep/Terraform modules ]
└── azure.yaml [ Describes the app and type of Azure resources]
初始化模板
该 azd init
命令用于初始化应用程序,以便在 Azure 上预配和部署应用资源。 此命令会提示你在两个不同的工作流之间进行选择,以初始化以下部分中概述的模板。
使用当前目录中的代码:选择此选项可指示
azd
分析目录中的代码,以标识其使用的技术,例如编程语言、框架和数据库系统。azd
然后,将自动生成模板资产,例如azure.yaml
服务定义文件和infra
包含基础结构即代码文件的文件夹。选择模板:选择此选项可将现有模板用作起点。 默认情况下,
azd
允许从 Awesome AZD 库浏览模板,但也可以配置自己的模板库。 选择模板时,该模板的资产将添加到现有项目目录。
下面各节概述了其中每个工作流的详细信息。
可以使用自己的项目执行后续步骤。 但是,如果想要继续使用示例应用程序,请将以下初学者存储库克隆到计算机上的空目录:
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
打开所选命令行工具,使其指向项目的根目录。
azd init
运行命令以初始化模板。azd init
出现提示时,选择选项以 使用当前目录中的代码。
azd
分析项目并提供检测到的服务和建议的 Azure 托管资源的摘要。选择“ 确认并继续初始化我的应用”。
azd
在项目根目录中生成以下资产:azure.yaml
具有相应服务定义的文件。infra
包含基础结构即代码文件的文件夹,用于预配项目并将其部署到 Azure。- 一个
.azure
.env
文件夹,其中包含在文件中设置的环境变量。
本文后面提供了有关此检测和生成过程的更多详细信息。
生成的文件适用于提供的示例应用,也可以适用于自己的应用。 如有必要,可以修改生成的文件以满足你的需求。 例如,如果你的应用依赖于 Azure 资源,则可能需要进一步修改文件夹中的基础结构即代码文件
infra
,而该资源超出了标识的azd
Azure 资源。运行命令
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 容器应用。
- 对于数据库,支持的数据库技术和服务之间的映射:
- MongoDB:用于 MongoDB 的 Azure CosmosDB API
- PostgreSQL:Azure Database for PostgreSQL 灵活服务器
- Redis:Azure 容器应用 Redis 加载项
- 使用数据库的服务将具有环境变量,这些环境变量默认提供与预先配置的数据库的连接。
- 检测到前端和后端服务时,将更新后端服务的 Azure 主机上的 CORS 配置,以允许前端服务的默认托管域。 这可以在基础结构即代码配置文件中根据需要进行修改或删除。
添加对开发容器的支持
还可以使模板与开发容器和 Codespaces 兼容。 开发容器允许将容器用作功能齐全的开发环境。 它可用于运行应用程序、用于分隔使用代码库所需的工具、库或运行时,以及帮助持续集成和测试。 可以在私有云或公有云中本地或远程运行开发容器。 (来源: https://containers.dev/)
添加对开发容器的支持:
在项目的根目录中创建 .devcontainer 文件夹。
devcontainer.json
使用所需配置在文件夹内.devcontainer
创建文件。azd
初学者模板提供了一个示例devcontainer.json
文件,可以复制到项目中并根据需要进行修改。
详细了解如何在 Visual Studio Code 文档中使用开发容器 。
添加对 CI/CD 管道的支持
还可以使用 GitHub 操作或 Azure DevOps 在模板中添加对 CI/CD 的支持,请执行以下步骤:
将
.github
GitHub 操作的文件夹或.ado
Azure DevOps 的文件夹添加到项目的根目录。将工作流文件添加到新文件夹中。 初学者
azd
模板为每个平台提供了一个示例 GitHub Actions 工作流文件和示例 Azure DevOps Pipelines 文件,你可以将其复制到项目中,并根据需要进行修改。你还可能需要使用工作流运行所需的环境变量更新
main.parameters.json
文件夹中infra
的文件。
配置 CI/CD 管道
如果模板包含对 GitHub Actions 或 Azure Pipelines 的支持,可以使用以下步骤配置 CI/CD 管道:
运行以下命令,将更新推送到存储库。 由于更新,会触发 GitHub Actions 工作流。
azd pipeline config
使用浏览器,转到项目的 GitHub 存储库。
选择“操作”以查看工作流正在运行。
清理资源
如果不再需要本文中创建的资源,请运行以下命令:
azd down
另请参阅
- 使用 Visual Studio Code 创建 Bicep 文件,以获取使用 Bicep 文件的简介。
- Bicep 示例
- 如何将 Azure 资源管理器 模板(ARM 模板)反编译到 Bicep
- Azure 开发人员 CLI 的 azure.yaml 架构
请求帮助
有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 故障排除和支持 页。
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈