
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Terragrunt 官方 Docker 镜像是由 Terragrunt 官方维护的容器化分发形式,封装了 Terragrunt 工具及其运行依赖,提供开箱即用的 Terragrunt 执行环境。Terragrunt 是 Terraform 的封装工具,旨在简化多环境、多模块 Terraform 配置的管理,通过自动化后端配置、版本控制、依赖管理等功能,提升基础设施即代码(IaC)的维护效率。
plan、apply、destroy);terragrunt.hcl 集中定义通用配置(如后端、提供商),避免重复代码;terragrunt plan/apply,实现基础设施自动化部署;1. 拉取镜像
从 Docker Hub 拉取官方镜像(默认使用最新版本,可指定标签如 v0.55.16 锁定版本):
bashdocker pull gruntwork/terragrunt:latest
2. 验证安装
运行以下命令检查 Terragrunt 版本,确认镜像正常工作:
bashdocker run --rm gruntwork/terragrunt:latest terragrunt --version
3. 执行 Terragrunt 命令
通过挂载本地 Terragrunt 配置目录,执行具体命令(如 plan、apply):
bash# 假设当前目录包含 terragrunt.hcl 及 Terraform 模块 docker run --rm -v $(pwd):/workspace -w /workspace gruntwork/terragrunt:latest terragrunt plan
挂载配置文件
将本地 Terragrunt 配置(terragrunt.hcl)、Terraform 模块、变量文件(如 terraform.tfvars)挂载到容器内 /workspace 目录(或自定义工作目录):
bashdocker run --rm \ -v $(pwd)/config:/workspace \ # 挂载配置目录 -v $(pwd)/secrets:/secrets \ # 挂载敏感文件(如 AWS 凭证) -w /workspace \ # 设置工作目录 gruntwork/terragrunt:latest \ terragrunt apply
传递环境变量
通过 -e 参数传递环境变量(如云服务凭证、自定义配置):
bashdocker run --rm \ -v $(pwd):/workspace -w /workspace \ -e AWS_ACCESS_KEY_ID="AKIAEXAMPLE" \ -e AWS_SECRET_ACCESS_KEY="secret" \ -e TERRAGRUNT_TFPATH="/usr/local/bin/terraform" \ # 指定 Terraform 路径 gruntwork/terragrunt:latest \ terragrunt plan
自定义 Terraform 版本
通过 TERRAGRUNT_TFPATH 环境变量指定 Terraform 版本,镜像会自动下载对应版本(需确保网络通畅):
bashdocker run --rm \ -v $(pwd):/workspace -w /workspace \ -e TERRAGRUNT_DOWNLOAD="true" \ # 允许自动下载 Terraform -e TERRAGRUNT_TFPATH="/usr/local/bin/terraform-1.6.0" \ # 指定版本 gruntwork/terragrunt:latest \ terragrunt init
持久化缓存
将 Terragrunt 缓存目录(含下载的 Terraform 二进制、模块缓存)挂载到本地,避免重复下载:
bashdocker run --rm \ -v $(pwd):/workspace \ -v ~/.terragrunt-cache:/root/.terragrunt-cache \ # 持久化缓存 gruntwork/terragrunt:latest \ terragrunt apply
常用环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
TERRAGRUNT_TFPATH | 指定 Terraform 可执行文件路径(用于自定义版本或路径) | /usr/local/bin/terraform |
TERRAGRUNT_DOWNLOAD | 是否自动下载 Terraform(true/false) | true |
TERRAGRUNT_CACHE_DIR | Terragrunt 缓存目录(存放下载的 Terraform、模块缓存等) | /root/.terragrunt-cache |
TERRAGRUNT_DEBUG | 启用调试模式(输出详细日志) | false |
TERRAFORM_VERSION | 构建镜像时指定默认 Terraform 版本(仅用于镜像构建,运行时可覆盖) | 最新稳定版 |
构建参数(用于自定义镜像)
如需构建包含特定 Terraform 版本的镜像,可通过 --build-arg 指定:
bashdocker build \ --build-arg TERRAFORM_VERSION=1.6.0 \ -t my-custom-terragrunt:1.6.0 \ https://github.com/gruntwork-io/terragrunt.git#:docker
创建 docker-compose.yml,定义 Terragrunt 服务,适用于本地开发或固定环境:
yamlversion: '3.8' services: terragrunt: image: gruntwork/terragrunt:latest volumes: - ./config:/workspace:ro # 挂载只读配置目录 - ./secrets:/secrets:ro # 挂载敏感文件(如云凭证) - terragrunt-cache:/root/.terragrunt-cache # 持久化缓存 environment: - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - TERRAGRUNT_TFPATH=/usr/local/bin/terraform-1.6.0 working_dir: /workspace command: ["terragrunt", "plan"] # 默认执行的命令 volumes: terragrunt-cache: # 命名卷,持久化缓存数据
启动服务:
bashdocker-compose up
在 .gitlab-ci.yml 中集成 Terragrunt 镜像执行部署任务:
yamlstages: - deploy deploy-infra: stage: deploy image: gruntwork/terragrunt:latest before_script: - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY script: - cd /builds/your-project/infrastructure # 切换到配置目录 - terragrunt init - terragrunt plan - terragrunt apply --auto-approve only: - main # 仅主分支触发
root)可能对挂载文件有读写权限,生产环境建议通过 --user 参数指定非 root 用户,避免权限泄露。apply)时,需确保容器网络可访问云厂商 API(如 AWS、Azure 等),无需特殊代理时可使用默认网络模式。v0.55.16)而非 latest,避免工具版本变更导致兼容性问题。v<terragrunt-version>(如 v0.55.16),latest 指向最新稳定版;您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务