通过 Terrafiom 将来自 DockerHub 的 Docker 图像部署为应用程序
Deploy Docker Image from DockerHub as App via Terrafiom
我正在尝试通过 Terraform 部署应用程序。我想使用来自 DockerHub.
我的 public 图片之一
DigitalOcean Provider 有效(通过其他 PoC 确认)。
现在我想将 Docker 图像部署为应用程序。我找到了 digitalocean_app 资源 (https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/app)。文档声明,我必须将“registry_type”设置为 DOCR(DigitalOcean 容器注册表)或 DOCKER_HUB.
之一
但我真的不知道怎么做。这是我的配置。
resource "digitalocean_app" "docs-page-docker-app" {
spec {
name = "docs-page-docker-app"
region = "fra1"
# domain
service {
name = "docs-page-docker-app-image"
http_port = 3000
image {
registry_type = "DOCKER_HUB"
repository = "sommerfeldio/docs-website"
tag = "stable"
}
}
}
}
当我将 DOCKER_HUB 放在引号 (") 中时,我总是收到错误消息“图像不存在或私有”。当我删除引号时,我的配置不再有效。
从文档中我真的不知道如何指定我想使用 DockerHub 作为容器注册表。有人知道我该如何解决这个问题吗?
我成功地 reverse-engineer 应用程序部署。我通过 WebUI 使用来自 DockerHub 的图像创建了一个 Docker 应用程序,并使用 terraform import
获取 terraform 配置。部署现在有效。
现在我 运行 遇到了一些 DNS 问题,但这在一个单独的问题中可能会更好。
这是允许将映像从 DockerHub 部署到 DigitalOcean App 平台的配置:
resource "digitalocean_app" "docs-page" {
spec {
domains = [
"${digitalocean_record.CNAME-docs.name}.${digitalocean_domain.cloud.name}",
]
name = "docs-page"
region = var.do_region
service {
name = "docs-page-app"
http_port = 80
instance_count = 1
instance_size_slug = var.do_instance_smallest
internal_ports = []
#name = "docs-page-app"
source_dir = "/"
image {
registry_type = "DOCKER_HUB"
registry = "sommerfeldio"
repository = "docs-website"
tag = "stable"
}
routes {
path = "/"
preserve_path_prefix = false
}
}
}
}
resource "digitalocean_domain" "cloud" {
name = var.do_base_domain
}
resource "digitalocean_record" "CNAME-docs" {
domain = digitalocean_domain.cloud.name
type = "CNAME"
name = "docs"
value = "@"
}
我正在尝试通过 Terraform 部署应用程序。我想使用来自 DockerHub.
我的 public 图片之一DigitalOcean Provider 有效(通过其他 PoC 确认)。
现在我想将 Docker 图像部署为应用程序。我找到了 digitalocean_app 资源 (https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/app)。文档声明,我必须将“registry_type”设置为 DOCR(DigitalOcean 容器注册表)或 DOCKER_HUB.
之一但我真的不知道怎么做。这是我的配置。
resource "digitalocean_app" "docs-page-docker-app" {
spec {
name = "docs-page-docker-app"
region = "fra1"
# domain
service {
name = "docs-page-docker-app-image"
http_port = 3000
image {
registry_type = "DOCKER_HUB"
repository = "sommerfeldio/docs-website"
tag = "stable"
}
}
}
}
当我将 DOCKER_HUB 放在引号 (") 中时,我总是收到错误消息“图像不存在或私有”。当我删除引号时,我的配置不再有效。
从文档中我真的不知道如何指定我想使用 DockerHub 作为容器注册表。有人知道我该如何解决这个问题吗?
我成功地 reverse-engineer 应用程序部署。我通过 WebUI 使用来自 DockerHub 的图像创建了一个 Docker 应用程序,并使用 terraform import
获取 terraform 配置。部署现在有效。
现在我 运行 遇到了一些 DNS 问题,但这在一个单独的问题中可能会更好。
这是允许将映像从 DockerHub 部署到 DigitalOcean App 平台的配置:
resource "digitalocean_app" "docs-page" {
spec {
domains = [
"${digitalocean_record.CNAME-docs.name}.${digitalocean_domain.cloud.name}",
]
name = "docs-page"
region = var.do_region
service {
name = "docs-page-app"
http_port = 80
instance_count = 1
instance_size_slug = var.do_instance_smallest
internal_ports = []
#name = "docs-page-app"
source_dir = "/"
image {
registry_type = "DOCKER_HUB"
registry = "sommerfeldio"
repository = "docs-website"
tag = "stable"
}
routes {
path = "/"
preserve_path_prefix = false
}
}
}
}
resource "digitalocean_domain" "cloud" {
name = var.do_base_domain
}
resource "digitalocean_record" "CNAME-docs" {
domain = digitalocean_domain.cloud.name
type = "CNAME"
name = "docs"
value = "@"
}