如何通过ARM模板启用Azure容器Web应用的持续部署
用ARM模板配置Azure App Service容器的持续部署
当然可以用ARM模板搞定容器的持续部署,完全能满足你想要的配置一致、可重复、可销毁的需求!下面给你具体的实现方案和关键配置细节:
核心配置要点
在ARM模板的Microsoft.Web/sites资源中,主要通过以下几个属性来配置持续部署:
scmType:指定持续部署的源类型,比如用Azure容器注册表(ACR)就设为AzureContainerRegistry,用GitHub就设为GitHub,外部Git仓库则用ExternalGit。repositoryUrl:对应源的地址——ACR的话就是你的镜像仓库地址(比如your-registry.azurecr.io/your-image),Git源的话就是仓库的克隆地址。branch:Git源填要跟踪的分支名;ACR的话填要监听的镜像标签(比如latest)。isManualIntegration:设为false就能启用自动触发部署,源有更新时会自动同步到App Service。
示例ARM模板片段
下面是针对ACR镜像持续部署的简化模板,你可以根据自己的源类型调整:
{ "type": "Microsoft.Web/sites", "apiVersion": "2023-01-01", "name": "[parameters('siteName')]", "location": "[parameters('location')]", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]", "siteConfig": { "linuxFxVersion": "[concat('DOCKER|', parameters('acrRegistryName'), '.azurecr.io/', parameters('imageName'), ':', parameters('imageTag'))]", "alwaysOn": true }, "scmType": "AzureContainerRegistry", "repositoryUrl": "[concat(parameters('acrRegistryName'), '.azurecr.io/', parameters('imageName'))]", "branch": "[parameters('imageTag')]", "isManualIntegration": false, "registryCredentials": { "url": "[concat(parameters('acrRegistryName'), '.azurecr.io')]", "username": "[parameters('acrUsername')]", "password": "[parameters('acrPassword')]" } }, "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]" ] }
关键部分说明
linuxFxVersion:指定要部署的Docker镜像,格式必须是DOCKER|registry/image:tag,这是Linux App Service识别容器镜像的标准格式。registryCredentials:当用ACR时,需要提供访问凭证,确保App Service能拉取镜像并监听标签更新。如果想更安全,也可以用托管身份替代密码:给App Service分配系统托管身份,然后在ACR的IAM里添加AcrPull权限,同时删掉模板里的registryCredentials配置即可。- 如果是用GitHub仓库的Dockerfile自动构建部署,只需把
scmType改成GitHub,repositoryUrl填你的GitHub仓库地址,branch填目标分支,还可以添加gitHubActionConfiguration字段来自定义构建步骤。
验证与注意事项
- 部署完模板后,你可以在App Service的部署中心看到配置已经生效,当ACR镜像更新对应标签,或者Git仓库指定分支有提交时,会自动触发新部署。
- 务必确保你的App Service Plan是Linux类型,因为容器部署只能在Linux环境下运行。
内容的提问来源于stack exchange,提问作者Pezholio
相关产品推荐
相关产品推荐

