【发布时间】:2019-03-26 19:46:41
【问题描述】:
我正在尝试在 docker 上部署 terraform,但是我的 docker 容器似乎无法读取 main.tf 文件并引发错误,例如 provide: not found 和 region: not found。我正在提供我的示例 dockerfile 和 main.tf,请指出我哪里出错了
Dockerfile sn-p,这里不能分享完整文件,但是sn-p包含所有terraform相关代码
RUN apt-get -y install wget unzip
RUN wget https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip
RUN unzip terraform_0.11.11_linux_amd64.zip
RUN mv terraform /usr/local/bin/
ADD main.tf /usr/local/bin/terraform
RUN chmod +x /usr/local/bin/terraform
RUN terraform init
RUN terraform apply -auto-approve /usr/local/bin/terraform -var 'access_key=${AWS_ACCESS_KEY}' -var 'secret_key=${AWS_SECRET_KEY}'
main.tf
provider "aws" {
region = "region-name"
}
resource "aws_instance" "aws_testing" {
ami = "ami-name"
instance_type = "t2.micro"
#Was using variables.tf ealier but that was laso not being read by
#docker, so hard coded these values
subnet_id = "my-subnet5"
#Security group
security_groups = ["smy-security-group"]
}
预期的结果是为此创建一个 AWS 实例。 此外,terraform 脚本独立运行良好,使用 docker 我收到此错误
【问题讨论】:
-
你能显示你将 main.tf 放入容器的位置吗?从上面的 sn-p 中我只能看到您下载/解压缩 terraform。但是没有提到运行 terraform 命令时容器内明显需要的 main.tf 文件。
-
ADD main.tf /usr/local/bin/terraform 这一行会将主变量复制到 terraform,不是吗,还是我需要从 /us/local/bin 路径执行 RUN 命令
-
请看我的回答。
ADD main.tf /usr/local/bin/terraform不起作用,因为 terraform 是可执行文件而不是文件夹(您在 Dockerfile 中给出 +x)。ADD main.tf /usr/local/bin之后可以使用WORKDIR /usr/local/bin,因为 main.tf 与您执行terraform命令的目录相同。如果您想将 main.tf 放在其他任何地方,您只需在单个 terraform 命令中添加 main.tf 的路径(请参阅答案)。 -
我认为在我的多次尝试中......看到你给出了同样的建议......谢谢