【发布时间】:2025-11-30 21:15:01
【问题描述】:
我的团队正在尝试使用 Terraform 创建一个使用 Windows Docker 容器的 Azure 应用服务。
我测试了the docker-basic example, from the Terraform GitHub project,成功创建了Linux Docker App Service。
接下来,我使用 azurerm_app_service 和 azurerm_app_service_plan 的 Terraform 文档,将 main.tf 文件更改为将使用 Windows IIS Docker image 创建 Windows Docker 应用服务的文件。这是更新后的main.tf 文件:
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "main" {
name = "${var.prefix}-resources"
location = "${var.location}"
}
resource "azurerm_app_service_plan" "main" {
name = "${var.prefix}-asp"
location = "${azurerm_resource_group.main.location}"
resource_group_name = "${azurerm_resource_group.main.name}"
kind = "Windows"
reserved = false
sku {
tier = "Standard"
size = "S1"
}
}
resource "azurerm_app_service" "main" {
name = "${var.prefix}-appservice"
location = "${azurerm_resource_group.main.location}"
resource_group_name = "${azurerm_resource_group.main.name}"
app_service_plan_id = "${azurerm_app_service_plan.main.id}"
site_config {
app_command_line = ""
windows_fx_version = "DOCKER|windows/servercore/iis:windowsservercore-ltsc2019"
}
app_settings = {
"WEBSITES_ENABLE_APP_SERVICE_STORAGE" = "false"
"DOCKER_REGISTRY_SERVER_URL" = "https://mcr.microsoft.com"
}
}
有 4 个变化。在azurerm_app_service_plan 中,kind 字段现在设置为“Windows”,reserved 字段现在设置为 false。在azurerm_app_service中,Docker镜像在windows_fx_version字段中指定(而不是linux_fx_version),DOCKER_REGISTRY_SERVER_URL指向微软公共docker注册表mcr.microsoft.com(而不是docker.io)
Terraform 应用成功,但是创建的 App Service 不是 Docker App Service。相反,它是在 .NET 堆栈配置中创建的。我们将创建的内容与我们在 Azure 门户中创建的 Windows Docker App Service 进行了比较,结果显然不对。
如果需要更多更改,或者我的任何更改有误,我和我的团队无法从官方文档中检测到它们可能是什么。在文档中我们遗漏了什么吗?文档中是否缺少步骤?这是一个真正的 Terraform 错误吗?
【问题讨论】:
标签: docker terraform terraform-provider-azure azure-appservice azurerm-app-service