通过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"