如何使用Terraform部署docker compose项目?

如何使用Terraform部署docker compose项目?,docker,docker-compose,terraform,Docker,Docker Compose,Terraform,我已经找遍了所有地方,找不到一个连贯的资源来直接描述如何做到这一点。我有一个这样的项目: ./ |-src/ |--.. |--Dockerfile |-docker-compose.yaml terraform配置文件如下所示: variable "do_token" {} # Configure the DigitalOcean Provider provider "digitalocean" { token = "${var.do_token}" } # Create a

我已经找遍了所有地方,找不到一个连贯的资源来直接描述如何做到这一点。我有一个这样的项目:

./
 |-src/
 |--..
 |--Dockerfile
 |-docker-compose.yaml
terraform配置文件如下所示:

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=
#码头工人准备好了吗?
}
我的撰写文件正确地设置了应用程序体系结构。我只想找到一种方法,将其部署到digital ocean上某个给定的框中(最好是通过ip),然后运行
docker组合。我该怎么做?

供应员 Terraform有一个允许您在创建资源时复制文件和执行脚本的工具

resource "digitalocean_droplet" "web" {
  # ...

  provisioner "file" {
    source      = "compose-app/"
    destination = "/app"
  }

  provisioner "remote-exec" {
    inline = [
      "cd /app",
      "docker-compose up",
    ]
  }
}
也可以与

码头工人 Terraform有一个简单的,但不管理现成的合成或群集定义,因此您需要在,,)中逐块定义合成环境

库伯内特斯
要使用Terraform部署真实世界的应用程序,您可能最好使用,它将允许您设置一个可在Docker上访问的运行。这需要运行Kubernetes集群并编写Kubernetes定义,这有助于从Docker Compose转换而来。

Docker Compose是一种开发工具;使用Swarm进行生产,而不是编写。Docker提供程序似乎不是现成的。您需要首先生成证书。有在AWS上运行它的经验吗?我在这里选择文件供应器
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
  }
}