2017-07-03 88 views
1

有沒有人試過一起使用所有這些工具?與docker-compose和nginx-proxy一起使用Terraform

我目前使用四容器解決方案的nginx-proxy和docker-compose。

我現在正在嘗試使部署更好/更快/更便宜,並認爲terraform可能是我現在正在尋找的部分。

我的問題是 - docker-composose的terraform工作嗎?或者它們之間有太多重疊?

感謝您的任何建議!

+0

terraform是基礎設施作爲代碼,而不是配置工具,我認爲你去錯誤的工具,這應該由ansible,木偶,廚師,鹽或其他自動化工具 – BMW

回答

0

您可以使用docker供應商在Terraform中運行單個或多個碼頭集裝箱。

https://www.terraform.io/docs/providers/docker/index.html

樣品nginx的terraform配置

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 
    } 
} 
2

您可以使用Terraform提供者已經建議,但如果你想堅持到泊塢窗,構成以任何理由,你也可以創建你的搬運工,撰寫文件並用用戶數據運行必要的命令。看看到template_filetemplate_cloudinit_config

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的盒子。這種方法也適用於自動調節。