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

如何将Terraform变量传递至docker-compose.yaml文件?

解决Terraform中docker-compose.yaml变量未替换的问题

问题核心在于file()函数仅读取文件原始内容,不会解析替换其中的变量占位符。要实现变量注入,需要使用Terraform的templatefile()函数来渲染模板文件。

步骤1:调整模板文件(可选重命名)

保持你的docker-compose配置内容不变,可将文件重命名为docker-compose.tpl(也可保留原文件名),模板中的变量占位符使用${变量名}格式:

version: '3.2'
services:
  cadvisor:
    image: gcr.io/google-containers/cadvisor:${image_version}     
    container_name: cadvisor
    volumes:
    - /:/rootfs:ro
    - /var/lib/docker:/var/lib/docker:ro
    mem_limit: ${limit}
    mem_reservation: ${reservation}
    ports:
    - 8080:8080

步骤2:修改Terraform资源配置

将local_file资源中的file()替换为templatefile(),并通过第二个参数传入需要替换的变量映射:

resource "local_file" "compose" {
  content  = templatefile("${var.compose_path}/docker-compose.tpl", {
    image_version = var.image_version
    limit         = var.limit
    reservation   = var.reservation
  })
  filename = "${path.module}/foo.bar"
}

关键说明

  • templatefile()会解析模板中的${变量名}占位符,并用传入的映射值替换
  • 如果模板中存在不需要替换的${}语法,需用$${}进行转义
  • 若保留原文件名docker-compose.yml,只需将模板路径改为对应文件名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:30