我正在尝试在Terraform中设置自动部署到我的golang服务器的Docker。
如果我手动部署,它就可以工作,但无法使terraform配置正常工作。
这是我所拥有的。
resource "docker_image" "terraform_golang" {
name = "terraform_golang"
build {
path = "./../"
build_arg = {
tag : "golang-server"
}
label = {
author : "Bill"
}
}
}
resource "docker_container" "terraform_backend" {
image = docker_image.terraform_golang.latest
name = "Terraform_Backend"
env = [ "database=172.19.0.3:3306" ]
ports {
internal = 8080
external = 8080
}
network_mode = "bridge"
networks_advanced {
name = "golang-server"
}
}
这是我得到的错误:
│ Error: failed to solve with frontend dockerfile.v0: failed to read dockerfile: Error processing tar file(exit status 1): unexpected EOF
│
│
│
│ with module.terraform.docker_image.terraform_golang,
│ on terraform\backend.tf line 2, in resource "docker_image" "terraform_golang":
│ 2: resource "docker_image" "terraform_golang" {
下面是我的手动部署cmd,它正在工作:
docker build . -t golang-server
docker run --network=golang-server --name=golang-server --env database=172.19.0.3:3306 --expose=8080 -p=8080:8080/tcp golang-server
这是我的文档:
FROM golang:1.18
WORKDIR $GOPATH/src
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
EXPOSE 8080
CMD ["golang-server"]
我的文件夹结构是这样设置的,这样我的terraform文件就在子文件夹中,在一个模块中,我希望这不会扰乱任何事情:
发布于 2022-08-29 03:55:38
“路径”只更改上下文路径,而不是找到停靠文件的路径。老实说,这就像一个bug,因为docker命令默认为PATH/Dockerfile作为停靠文件路径,但这就是terraform插件当前的工作方式。
您需要的是添加一个dockerfile参数来指向实际的Dockerfile;
resource "docker_image" "terraform_golang" {
name = "terraform_golang"
build {
dockerfile = "../Dockerfile"
path = ".."
build_arg = {
tag : "golang-server"
}
label = {
author : "Bill"
}
}
}
https://stackoverflow.com/questions/73523774
复制相似问题