将 Terraform 与 docker-compose 和 nginx-proxy 结合使用
Using Terraform with docker-compose and nginx-proxy
有没有人试过一起使用所有这些工具?
我目前正在使用 nginx-proxy 和 docker-compose 作为四容器解决方案。
我现在正在尝试进行部署 better/faster/cheaper,我认为 terraform 可能是我正在寻找的部分。
我的问题是 - terraform 可以与 docker-compose 一起使用吗?还是它们之间有太多重叠?
感谢任何建议!
您可以使用 docker 提供程序在 Terraform 中 运行 单个或多个 docker 容器。
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
}
}
您可以按照已经建议的那样使用 Terraform 提供程序,但是如果您出于任何原因想要坚持使用 docker-compose,您还可以创建 docker-compose 文件和 运行必要的命令与用户数据。看看template_file and template_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 的盒子。此方法也适用于自动缩放。
有没有人试过一起使用所有这些工具?
我目前正在使用 nginx-proxy 和 docker-compose 作为四容器解决方案。
我现在正在尝试进行部署 better/faster/cheaper,我认为 terraform 可能是我正在寻找的部分。
我的问题是 - terraform 可以与 docker-compose 一起使用吗?还是它们之间有太多重叠?
感谢任何建议!
您可以使用 docker 提供程序在 Terraform 中 运行 单个或多个 docker 容器。
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
}
}
您可以按照已经建议的那样使用 Terraform 提供程序,但是如果您出于任何原因想要坚持使用 docker-compose,您还可以创建 docker-compose 文件和 运行必要的命令与用户数据。看看template_file and template_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 的盒子。此方法也适用于自动缩放。