使用Terraform创建并推送Docker镜像到Google Cloud Registry

4
我正在尝试使用 Kreuzwerker提供的方法创建并推送docker镜像到Google Cloud Registry。 我能够使用以下代码创建镜像(提供程序设置在其他地方),但当我将名称设置为容器注册表时,我会遇到错误:错误:推送docker镜像时出错:来自守护程序的错误响应:错误参数和缺少X-Registry-Auth:EOF。我发现文档相当贫乏,缺乏示例。
resource "docker_registry_image" "my_project" {
name = "eu.gcr.io/gcp_project/dockerimage:v1"
build {
context = "${path.module}/filepath"
dockerfile = "Dockerfile"
  }
}

https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs/resources/registry_image

更新:

最终我使用了本地执行(local-exec)和时间戳触发器,这样docker命令会在每次Terraform部署时构建并推送。

resource "null_resource" "docker_build" {

triggers = {
always_run = timestamp()

}

provisioner "local-exec" {
working_dir = path.module
command     = "docker build -t ${local.docker_image} ./my_app/ && docker push ${local.docker_image}"
}
}
1个回答

1

你的提供者是如何定义的?它应该包括注册表认证部分。

provider "docker" {
  host = "tcp://localhost:2376"

  registry_auth {
    address = "eu.gcr.io"
    config_file = pathexpand("~/.docker/config.json")
  }
}

如果config.json文件不存在,请参见https://cloud.google.com/container-registry/docs/advanced-authentication了解如何创建此文件。 您还可以在Terraform Docker提供程序的文档主页上找到有关配置注册表身份验证的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接