通过Azure应用程序服务的Terraform脚本将变量传递给Docker Compose

通过Azure应用程序服务的Terraform脚本将变量传递给Docker Compose,docker,docker-compose,azure-web-app-service,terraform,Docker,Docker Compose,Azure Web App Service,Terraform,我该怎么办 VAR=VAULE docker-compose up 从使用Docker Compose文件构建Azure应用程序服务的Terraform脚本 site_config { app_command_line = "" linux_fx_version = "COMPOSE|${filebase64("../docker-compose.yaml")}" } 我正在通过terraform成功构建Azu

我该怎么办

VAR=VAULE docker-compose up
从使用Docker Compose文件构建Azure应用程序服务的Terraform脚本

 site_config {
    app_command_line = ""
    linux_fx_version = "COMPOSE|${filebase64("../docker-compose.yaml")}"
  }
我正在通过terraform成功构建Azure应用程序服务,terraform承载一个推送到ACR的docker容器。但是,我想将变量传递到docker-compose.yaml文件,但似乎无法找到在那里传递变量的方法

docker compose是从


  depends_on = [ null_resource.docker_push ]

  name                = "myapps-apps-appservice"
  location            = "${azurerm_resource_group.mine.location}"
  resource_group_name = "${azurerm_resource_group.mine.name}"
  app_service_plan_id = "${azurerm_app_service_plan.asp.id}"

  site_config {
    app_command_line = ""
    linux_fx_version = "COMPOSE|${filebase64("../docker-compose.yaml")}"
  }

  app_settings = {
    "WEBSITES_ENABLE_APP_SERVICE_STORAGE" = "false",
    "DOCKER_REGISTRY_SERVER_USERNAME" = azurerm_container_registry.container_registry.admin_username,
    "DOCKER_REGISTRY_SERVER_URL" = azurerm_container_registry.container_registry.login_server,
    "DOCKER_REGISTRY_SERVER_PASSWORD" = azurerm_container_registry.container_registry.admin_password
  }
}
我的所有terraform都是从Azure管道的部署脚本调用的(这些变量就是在那里设置的)

但是,触发docker-compose.yaml文件时,这些变量都无法从该文件中访问。我甚至尝试在部署脚本中执行以下操作:

export VERSION=1
docker-compose.yaml snippnet

    image: "myacr.azurecr.io/my-container:${VERSION}"
    build: 
      context: ./my-container
      dockerfile: Dockerfile-prod
    container_name: my-container

有什么想法吗?

我找到了一份与sed合作的工作。在部署脚本期间,我只需使用sed替换docker-compose.yaml文件中的值,然后用令牌替换它们,以便版本控制保持不变。看起来有点老套,但很管用:)


我还测试了将变量添加到app_设置块。那没用
    image: "myacr.azurecr.io/my-container:${VERSION}"
    build: 
      context: ./my-container
      dockerfile: Dockerfile-prod
    container_name: my-container
eval "sed -i 's/MY_VERSION/$VERSION/' ../docker-compose.yaml"

cat ../docker-compose.yaml

terraform init 
terraform apply -auto-approve \
    -var "app_version=$VERSION" \
    -var "client_id=$ARM_CLIENT_ID" \
    -var "client_secret=$ARM_CLIENT_SECRET" \
    -var "tenant_id=$ARM_TENANT_ID" \
    -var "subscription_id=$ARM_SUBSCRIPTION_ID"

eval "sed -i 's/$VERSION/MY_VERSION/' ../docker-compose.yaml"