Docker compose 将Terraform与docker compose和nginx代理一起使用

Docker compose 将Terraform与docker compose和nginx代理一起使用,docker-compose,terraform,jwilder-nginx-proxy,Docker Compose,Terraform,Jwilder Nginx Proxy,有人试过同时使用所有这些工具吗 我目前正在使用nginx代理和docker compose来实现一个四容器解决方案 我现在正在努力使部署更好/更快/更便宜,并且认为terraform可能是我现在正在寻找的产品 我的问题是-terraform与docker compose一起工作吗?或者它们之间有太多的重叠 谢谢你的建议 您可以使用docker提供程序在Terraform中运行单个或多个docker容器 nginx地形配置示例 provider "docker" { host = "tcp:

有人试过同时使用所有这些工具吗

我目前正在使用nginx代理和docker compose来实现一个四容器解决方案

我现在正在努力使部署更好/更快/更便宜,并且认为terraform可能是我现在正在寻找的产品

我的问题是-terraform与docker compose一起工作吗?或者它们之间有太多的重叠


谢谢你的建议

您可以使用docker提供程序在Terraform中运行单个或多个docker容器

nginx地形配置示例

provider "docker" {
  host = "tcp://ec2-xxxxxxx.compute.amazonaws.com:2375/"
}
resource "docker_image" "nginx" {
  name = "nginx:1.11-alpine"
}
resource "docker_container" "nginx-server" {
  name = "nginx-server"
  image = "${docker_image.nginx.latest}"
  ports {
    internal = 80
    external = 80
  }
  volumes {
    container_path  = "/usr/share/nginx/html"
    host_path = "/home/scrapbook/tutorial/www"
    read_only = true
  }
}

您可以按照建议使用Terraform provider,但如果出于任何原因希望坚持docker compose,您也可以创建docker compose文件,并使用用户数据运行必要的命令。看看和

范例

nginx.tpl

#cloud-config
write_files:
 - content: |
        version: '2'
        services:
            nginx:
              image: nginx:latest
   path: /opt/docker-compose.yml
runcmd:
 - 'docker-compose -f /opt/docker-compose.yml up -d'
nginx.tf

data "template_file" "nginx" {
    template = "${file("nginx.tpl")}"
}

resource "aws_instance" "nginx" {
    instance_type = "t2.micro"
    ami = "ami-xxxxxxxx"

    user_data = "${data.template_file.nginx.rendered}"
}

我使用AWS,但这应该适用于任何支持用户数据的提供商和带有cloud init的box。同样,这种方法也适用于自动缩放。

terraform是作为代码的基础设施,而不是配置工具,我认为您使用了错误的工具,应该由ansible、puppet、chef、salt或其他自动化工具来完成