如何在Terraform中为Linux Azure App Service启用Docker持续部署?
问题描述
我们正在通过Terraform部署Linux App Service,希望每次向容器注册表推送新的Docker容器时,该服务都能拉取最新镜像。当前使用的Terraform资源如下:
resource "azurerm_linux_web_app" "name" { # 现有配置内容 }
启用持续部署可通过部署中心或执行以下Azure CLI命令实现:
az webapp deployment container config --enable-cd true --name name --resource-group rg
但我们希望仅通过Terraform完成配置,不想借助CLI命令补充操作。查阅Terraform官方文档后未找到相关配置方法,请问是否有可行的实现方式?
解决方案
可以通过azurerm_linux_web_app资源的app_settings配置项直接启用容器持续部署,无需依赖Azure CLI。具体配置逻辑如下:
- 添加
DOCKER_ENABLE_CI = "true"应用设置,开启镜像更新自动触发部署的功能 - 确保已配置容器注册表的认证信息(针对私有镜像仓库),包括
DOCKER_REGISTRY_SERVER_URL、DOCKER_REGISTRY_SERVER_USERNAME、DOCKER_REGISTRY_SERVER_PASSWORD - 在
site_config的application_stack中指定目标镜像及标签(建议使用latest标签配合自动部署)
完整的Terraform配置示例:
resource "azurerm_linux_web_app" "name" { name = "your-webapp-name" resource_group_name = "your-resource-group" location = azurerm_resource_group.your_rg.location service_plan_id = azurerm_service_plan.your_plan.id site_config { application_stack { docker_image = "your-registry.azurecr.io/your-image:latest" docker_image_tag = "latest" } } app_settings = { DOCKER_ENABLE_CI = "true" DOCKER_REGISTRY_SERVER_URL = "https://your-registry.azurecr.io" DOCKER_REGISTRY_SERVER_USERNAME = "your-registry-username" DOCKER_REGISTRY_SERVER_PASSWORD = "your-registry-password" } }
配置完成后,当你向指定容器仓库推送新的latest镜像时,App Service会自动检测到镜像更新,拉取最新版本并完成部署。如果使用Docker Hub等第三方仓库,只需调整对应的注册表URL和认证信息即可。
内容的提问来源于stack exchange,提问作者ScottishTapWater
相关产品推荐
相关产品推荐

