如何使用Terraform部署我的docker-compose项目?
我已经找遍了,找不到一个连贯的资源,描述如何直接做到这一点。 我有这样一个项目:
./ |-src/ |--.. |--Dockerfile |-docker-compose.yaml
一个terraformconfiguration文件是这样的:
variable "do_token" {} # Configure the DigitalOcean Provider provider "digitalocean" { token = "${var.do_token}" } # Create a web server resource "digitalocean_droplet" "web" { # ... }
我希望能够做到这样的事情
provider "digitalocean" { ip = <my-ip> # docker-compose up ? }
我的撰写文件正确设置了应用程序体系结构。 我只是想要一种方法,将其部署到数字海洋上某个给定的盒子上(最好通过ip),然后运行docker-compose up
。 我怎样才能做到这一点?
供应方
Terraform具有自动configuration器 ,允许您在创build资源时复制文件和执行脚本。
resource "digitalocean_droplet" "web" { # ... provisioner "file" { source = "compose-app/" destination = "/app" } provisioner "remote-exec" { inline = [ "cd /app", "docker-compose up", ] } }
厨师提供者也可以用于撰写食谱
docker
Terraform有一个简单的Docker提供程序,但不pipe理Compose或Swarm定义,因此您需要在卷 , networking , 图像 , 容器中逐个定义组合环境。
provider "docker" { host = "tcp://droplet:2375/" } resource "docker_image" "myapp" { name = "me/myapp:1.0.0" } resource "docker_container" "myapp" { name = "myapp" image = "${docker_image.myapp.latest}" ports { internal = 1234 external = 1234 } }
Kubernetes
对于部署真实世界的应用程序使用Terraform,您可能更好地使用Kubernetes提供程序 ,它允许您设置复制控制器来运行在Docker上作为服务访问的Pod 。 这将需要运行Kubernetes集群并编写Kubernetes定义, Kompose可以帮助从Docker Compose进行转换。