【发布时间】:2021-03-09 17:49:06
【问题描述】:
我尝试通过 Terraform 配置我的 Docker 服务,当更新 Docker 映像并且远程注册表中提供新的映像摘要时,terraform apply 我希望 Terraform 能够检测到摘要更新并更新正在运行的服务。
我应用了来自 https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs/resources/registry_image 的配置,因此我的 Terraform 脚本如下所示:
(...)
data "docker_registry_image" "my-docker-image" {
name = "my-registry/docker/my-image:2.263.3"
}
resource "docker_image" "docker-image" {
name = data.docker_registry_image.my-docker-image.name
pull_triggers = [data.docker_registry_image.my-docker-image.sha256_digest]
keep_locally = true
}
(...)
resource "docker_service" "my-service" {
name = "my-service"
task_spec {
container_spec {
image = data.docker_registry_image.my-docker-image.name
(...)
然后我执行 Terraform,可以清楚地看到来自远程注册表的摘要与运行容器中使用的摘要不同:
data.docker_registry_image.my-docker-image: Refreshing state... [id=sha256:d7aa8259d1503b970b14c66a06d144200d8f14a6c7f17d62cbfdad815309c9fb]
docker_image.my-docker-image: Refreshing state... [id=sha256:710bf0daf1b66543943dc086cfb3041000bb219aaf00ec75a8c18c770f4cb776my-registry/docker/my-image:2.263.3]
您可以看到两个摘要不同,但 Terraform 声称:
No changes. Infrastructure is up-to-date.
This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.
这不是真的,因为来自docker_registry_image 的摘要与docker_image 不同。
配置看起来很简单,但我还是无法配置。
【问题讨论】:
标签: docker terraform docker-swarm