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

如何在WSL控制台通过别名调用容器运行Terraform

解决方案

你的实现方案完全可行,按以下步骤修复即可:

1. 修复配置文件识别失败问题

最初tf init提示空目录的根源是原脚本中错误使用了小写的$pwd,Shell 内置的当前工作目录环境变量为大写$PWD,未定义的$pwd为空值,导致挂载了无效路径,容器内工作目录为空。

修正后的/setup/terraform/tf.sh内容如下:

#!/bin/bash
# 此处镜像名替换为你自己构建的自定义Terraform镜像名
TF_IMAGE="custom-tf-azure:latest"

docker run --rm -it --name terraform \
  -v "$(PWD):/workspace" \
  # 挂载本地Azure CLI凭证目录,复用本地登录状态
  -v "${HOME}/.azure:/root/.azure" \
  -w /workspace \
  $TF_IMAGE "$@"

修改完成后给脚本添加执行权限:

chmod +x /setup/terraform/tf.sh

2. 自定义镜像构建

你当前编写的Dockerfile逻辑完全可用,无需调整,构建命令参考:

cd /setup/terraform
docker build -t custom-tf-azure:latest .

如果后续需要新增其他依赖,直接在Dockerfile中补充安装步骤即可。

3. 解决Azure登录会话问题

不需要在容器内执行az login,你只需在WSL本地环境执行一次az login完成身份认证,上述脚本已经将本地~/.azure凭证目录挂载到容器内,容器中的Azure CLI会自动读取已有登录会话,无需重复认证。

4. 功能验证

回到projectA目录执行以下命令验证:

  • 执行tf plan可正常读取main.tf等配置文件,无空目录报错
  • 执行tf init -backend-config="env/backend.tfvars"可正常连接Azure后端存储,无权限或az命令缺失报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:06:01