☰
【研发类-后端开发Skills】azd-deployment 技能
2026/9/26 11:50:59 网站建设 项目流程

Deploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.

技能概述

azd-deployment 技能用于将容器化的前端+后端应用部署到Azure Container Apps。支持远程构建、托管身份和幂等基础设施,适用于需要企业级云部署的场景。

下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azd-deployment

主要功能

  • 容器化部署: 部署前端+后端容器应用到Azure Container Apps
  • 远程构建: 在Azure Container Registry中构建镜像
  • 托管身份: 配置系统分配的托管身份和RBAC
  • 幂等部署: Bicep声明式基础设施确保幂等性
  • 服务发现: Container App环境内内部HTTP路由
  • 环境管理: 多环境支持(dev、staging、prod)

触发条件

  • 部署容器化应用到Azure Container Apps
  • 需要企业级云基础设施部署
  • 需要托管身份和RBAC配置
  • 需要多环境部署管理

快速开始

# 初始化和部署
azd auth login
azd init # 创建azure.yaml和.azure/文件夹
azd env new <env-name> # 创建环境(dev, staging, prod)
azd up # 配置基础设施 + 构建 + 部署

核心文件结构

project/
├── azure.yaml # azd服务定义 + 钩子
├── infra/
│ ├── main.bicep # 根基础设施模块
│ ├── main.parameters.json # 从环境变量注入参数
│ └── modules/
│ ├── container-apps-environment.bicep
│ └── container-app.bicep
├── .azure/
│ ├── config.json # 默认环境指针
│ └── <env-name>/
│ ├── .env # 环境特定值(azd管理)
│ └── config.json # 环境元数据
└── src/
├── frontend/Dockerfile
└── backend/Dockerfile

azure.yaml配置

示例: 完整配置

name: azd-deployment

metadata:
template: my-project@1.0.0

infra:
provider: bicep
path: ./infra

azure:
location: eastus2

services:
frontend:
project: ./src/frontend
language: ts
host: containerapp
docker:
path: ./Dockerfile
context: .
remoteBuild: true

backend:
project: ./src/backend
language: python
host: containerapp
docker:
path: ./Dockerfile
context: .
remoteBuild: true

hooks:
postdeploy:
shell: sh
run: |
echo "Frontend: ${SERVICE_FRONTEND_URI}"
echo "Backend: ${SERVICE_BACKEND_URI}"

关键配置选项

选项描述
remoteBuild: true在Azure Container Registry中构建镜像(推荐)
context: .相对于项目路径的Docker构建上下文
host: containerapp部署到Azure Container Apps
infra.provider: bicep使用Bicep进行基础设施配置

常用命令

# 环境管理
azd env list # 列出环境
azd env select <name> # 切换环境
azd env get-values # 显示所有环境变量
azd env set KEY value # 设置变量

# 部署
azd up # 完整配置 + 部署
azd provision # 仅基础设施
azd deploy # 仅代码部署
azd deploy --service backend # 部署单个服务

# 调试
azd show # 显示项目状态
az containerapp logs show -n <app> -g <rg> --follow # 流式日志

托管身份与RBAC

示例: 启用系统分配身份

resource containerApp 'Microsoft.App/containerApps@2024-03-01' = {
identity: {
type: 'SystemAssigned'
}
}

output principalId string = containerApp.identity.principalId

关键提醒

重要注意事项:

  • 始终使用 `remoteBuild: true` - 本地构建在M1/ARM Mac上部署到AMD64会失败
  • Bicep输出自动填充 .azure/<env>/.env - 不要手动编辑
  • 使用 `azd env set` 设置密钥 - 不要在main.parameters.json默认值中设置
  • 服务标签(`azd-service-name`) - azd需要它来查找Container Apps
  • 钩子中使用 `|| true` - 防止RBAC"已存在"错误导致部署失败

最佳实践

推荐做法:

  • ✅ 使用Bicep声明式基础设施确保幂等性
  • ✅ 使用钩子保存手动添加的自定义域名
  • ✅ 使用内部DNS进行服务间通信
  • ✅ 配置后置钩子进行RBAC分配
  • ✅ 使用 `azd env set` 管理环境变量

使用限制

  • 仅适用于Azure Container Apps部署
  • 需要Azure订阅和azd CLI
  • 需要Bicep知识进行基础设施配置
  • 不涵盖其他Azure服务的部署

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询