Terraform 不在工作节点上创建 docker 服务

Terraform does not create docker service on worker node

我们需要在有限数量的主机上设置多个 jenkins 实例。

为此,我在两台服务器上设置了 Docker Swarm。

在 "master" 节点上,我使用 terraform 创建和管理 docker 服务。

当我手动创建服务时,容器会自动生成在工作节点上。当我创建一个有 2 个副本的服务时,容器会按应有的方式在两个节点上创建。

但是,当我使用 Terraform 代码创建和管理服务时,从未在工作节点上创建容器。即使我设置了 2 个副本,它们都是在主节点上创建的。

此处提供了用于创建服务的 main.tf 文件。

resource "docker_service" "jenkins_service" {
  name = var.project_name
  task_spec {
    container_spec {
      image = docker_image.jenkins_image.name
      mounts {
        target = "/var/jenkins_name"
        source = docker_volume.jenkins_volume.name
        type   = "volume"
      }
      mounts {
        source = "/var/run/docker.sock"
        target = "/var/run/docker.sock"
        type   = "bind"
      }
    }
    networks = ["${docker_network.jenkins_network.name}"]
  }

  endpoint_spec {
    ports {
      target_port    = "8080"
      published_port = var.web_interface_port
      publish_mode   = "ingress"
      name           = "WEB_INTERFACE"
    }
    ports {
      target_port    = "50000"
      published_port = var.api_interface_port
      publish_mode   = "ingress"
      name           = "API_INTERFACE"
    }
  }
}

我不知道我做错了什么。任何帮助将不胜感激

此致。

为了他人的利益: 我使用的是自定义 docker 图像,terraform 代码本质上是使用以下格式调用这些图像:从而强制 swarm 仅在实际拥有图像的主节点上启动容器。

我发现 this 非常好 post 指出了确切的问题。我的设置缺少 docker 注册表。我按照 link 中的步骤解决了问题。

谢谢,"fernandezcuesta" 花时间回复我的查询。

问候 森蒂尔·内森 M