错误:使用 docker_image 资源时 Terraform Docker 映像构建失败,状态代码为 403

问题描述 投票:0回答:1

我刚刚开始学习 Terraform,因此为了练习一些基本示例,我接手了一个简单的项目,我需要在其中编写 Terraform 配置文件:

  1. 在本地机器上创建一个 Dockerfile,使用
    nginx:latest
    作为基础镜像。
  2. 将本地目录下的index.html文件复制到容器中的
    /usr/share/nginx/html
    目录下。
  3. 构建名为
    "Webserver"
    的 Docker 映像,并在端口 5000 上运行名为
    "webcontainer"
    的 Docker 容器。
  4. 最后,导航至
    https://localhost:5000
    以验证部署是否成功。 我编写了以下配置文件,但是当我尝试使用 terraform apply 执行它时,出现以下错误:

我尝试寻找解决方案,但找不到任何东西。我找到了一个答案并尝试了故障排除步骤,但没有成功。我想知道该问题是否与 Windows 11 上的 Docker Desktop 应用程序设置有关,或者是否是我的代码中的某些内容导致了该问题。您能帮我解决这个问题吗?

错误:

Error: failed to read downloaded context: failed to load cache key: invalid response status 403
│
│   with docker_image.webserver,
│   on main.tf line 13, in resource "docker_image" "webserver":
│   13: resource "docker_image" "webserver" {

文件结构:

 Devops
    - main.tf
    - index.html
    - Dockerfile

代码:

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "3.0.2"
    }
  }
}

provider "docker" {}

# Build a Docker image
resource "docker_image" "webserver" {
  name         = "webserver"
  build {
    context    = "~/Desktop/Devops/Dockerfile"
    dockerfile = "~/Desktop/Devops/Dockerfile"
  }
}

# Run a Docker container
resource "docker_container" "webcontainer" {
  image = docker_image.webserver.image_id
  name  = "webcontainer"

  ports {
    internal = 80
    external = 5000
  }
}

# Copy index.html to the directory
resource "local_file" "index_html" {
  filename = "~/Desktop/Devops/index.html"
  content = file("~/Desktop/Devops/index.html")
}
docker nginx terraform dockerfile devops
1个回答
0
投票

我认为上下文应该是一个目录,因此编辑此行可以解决问题:

resource "docker_image" "webserver" {
  name         = "webserver"
  build {
    context    = "~/Desktop/Devops"
    dockerfile = "Dockerfile"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.