You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure与Terraform环境中将存储容器内的WAR包部署至App Service

从Azure存储容器部署WAR包到App Service的完整步骤(Terraform+手动操作)

一、Azure门户手动部署步骤(无需CI/CD)

部署中心确实以CI/CD集成为主,手动部署WAR包需通过Kudu控制台操作,步骤如下:

  • 进入目标App Service管理界面,左侧导航栏选择部署 > 高级工具,点击Go打开Kudu控制台
  • 在Kudu顶部菜单选择Debug console > CMD(或PowerShell)
  • 进入Java应用专属部署目录:site\wwwroot\webapps
  • 回到存储容器界面,找到目标WAR包,点击生成SAS令牌,设置合理过期时间后复制完整SAS URL
  • 回到Kudu的CMD控制台,执行curl命令下载WAR包到当前目录:
    curl -O "你的WAR包SAS URL"
    
  • 下载完成后,App Service会自动检测并完成部署,等待2-3分钟即可访问应用

二、Terraform自动化部署配置

方法1:通过local-exec调用Azure CLI执行部署

在已有Terraform配置基础上,添加以下代码实现自动化部署:

# 假设已有资源定义:azurerm_resource_group.example、azurerm_storage_account.example、azurerm_app_service.example、azurerm_storage_container.example

# 生成WAR包的临时SAS访问令牌
data "azurerm_storage_account_sas" "war_sas" {
  connection_string = azurerm_storage_account.example.primary_connection_string
  https_only        = true

  resource_types {
    service   = false
    container = true
    object    = true
  }

  services {
    blob  = true
    queue = false
    table = false
    file  = false
  }

  start  = timestamp()
  expiry = timeadd(timestamp(), "24h")

  permissions {
    read   = true
    write  = false
    delete = false
    list   = true
    add    = false
    create = false
    update = false
    process = false
  }
}

# 执行WAR包部署命令
resource "null_resource" "deploy_war" {
  provisioner "local-exec" {
    command = <<EOT
      az webapp deploy --resource-group ${azurerm_resource_group.example.name} --name ${azurerm_app_service.example.name} --src-url "https://${azurerm_storage_account.example.name}.blob.core.windows.net/${azurerm_storage_container.example.name}/your-app.war${data.azurerm_storage_account_sas.war_sas.sas}" --type war
    EOT
  }

  depends_on = [
    azurerm_app_service.example,
    data.azurerm_storage_account_sas.war_sas
  ]
}
  • 替换your-app.war为实际WAR包文件名
  • 确保本地已安装Azure CLI并完成登录认证
  • 执行terraform apply时会自动完成WAR包的下载与部署

方法2:配置自动同步的部署源

若需定期同步存储容器中的WAR包,可配置App Service部署源指向存储容器:

resource "azurerm_app_service_deployment_source" "war_deploy" {
  app_service_id = azurerm_app_service.example.id
  type           = "AzureBlob"

  azure_blob {
    url = "https://${azurerm_storage_account.example.name}.blob.core.windows.net/${azurerm_storage_container.example.name}/your-app.war${data.azurerm_storage_account_sas.war_sas.sas}"
  }
}
  • 此配置会让App Service定期检查存储容器中的WAR包,若有更新则自动部署

内容的提问来源于stack exchange,提问作者Lekha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:22:38