我执行此操作是为了使用 terraform 在本地构建 docker 镜像。第一次运行成功,但每次尝试都会失败,Error: failed to read dockerfile: unexpected EOF
除非我完全手动删除该terraform.tfstate
文件。
terraform {
backend "local" {}
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~>3.0.2"
}
# other providers
}
provider "docker" {
}
resource "docker_image" "dbx_kedro_img" {
name = "docker-build-test:latest"
build {
context = "."
dockerfile = "./Dockerfile"
}
}
我尝试将版本修改为docker-build-test:latest2
或docker-build-test2:latest
,运行terraform state rm docker_image.dbx_kedro_img
,删除本地 docker 镜像和容器,但没有成功。唯一有效的方法是手动删除terraform.tfstate
。欢迎提出任何想法。
docker rm $(docker ps -aq) # not useful
docker rmi $(docker images -q) -f # idem
terraform state rm docker_image.dbx_kedro_img # idem
我的docker文件:
# Use a lightweight base image
FROM alpine:latest
#
# Set the command to run when the container starts
CMD ["echo", "Hello, World3!"]
编辑:添加这样的触发器后,行为相同,第一次尝试后失败,即使修改了图像名称。
# not useful
resource "docker_image" "dbx_kedro_img" {
name = "docker-build-test5:latest"
build {
context = "."
dockerfile = "./Dockerfile"
}
triggers = {
always_rebuild = timestamp()
}
}