如何使用 Terraform 部署我的 docker-compose 项目? [英] How do I deploy my docker-compose project using Terraform?

查看:30
本文介绍了如何使用 Terraform 部署我的 docker-compose 项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经查看了所有内容,但找不到一个连贯的资源来直接描述如何执行此操作.我有一个这样的项目:

I've looked all over and can't find a coherent resource that describes how to do this straightforwardly. I have a project like so:

./
 |-src/
 |--..
 |--Dockerfile
 |-docker-compose.yaml

这样的 terraform 配置文件:

A terraform config file like this:

variable "do_token" {}

# Configure the DigitalOcean Provider
provider "digitalocean" {
  token = "${var.do_token}"
}

# Create a web server
resource "digitalocean_droplet" "web" {
  # ...
}

我希望能够做类似的事情

I want to be able to do something like

provider "digitalocean" {
    ip = <my-ip>
    # docker-compose up ?
}

我的撰写文件正确设置了应用程序架构.我只是想要一种方法将它部署到数字海洋某处的给定盒子(最好通过 ip)并运行 docker-compose up.我该怎么做?

My compose file sets up the application architecture properly. I just want a way to deploy that to a given box somewhere on digital ocean (via ip preferably) and the run docker-compose up. How can I do this?

推荐答案

Provisioners

Terraform 具有 provisioners,允许您复制文件并在资源上执行脚本创建.

Provisioners

Terraform has provisioners which allow you to copy files and execute scripts on resource creation.

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

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

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

Chef provisioner 也可以与 撰写食谱

Terraform 有一个普通的 Docker 提供者,但不管理 Compose或开箱即用的 Swarm 定义,因此您需要在 网络图片, 容器).

Terraform has a plain Docker provider but doesn't manage Compose or Swarm definitions out of the box so you would need to define your compose environment piece by piece in volumes, networks, images, containers).

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 提供程序 这会让你设置一个 复制控制器 来运行 pods 作为 服务 在 Docker 上.这将需要运行 Kubernetes 集群并编写 Kubernetes 定义,Kompose 可以帮助从 Docker Compose 转换.

Kubernetes

For deploying real world apps With Terraform you are probably better of using the Kubernetes provider that will let you set up a replication controller to run pods that are accessed as services on Docker. This will require running a Kubernetes cluster and writing the Kubernetes definition, Kompose can help converting from Docker Compose.

这篇关于如何使用 Terraform 部署我的 docker-compose 项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆