如何使用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进行转换。