terraform-provider-docker/README.md

80 lines
1.7 KiB
Markdown
Raw Normal View History

2020-12-24 10:27:42 -05:00
# Terraform Provider
2017-06-05 16:59:08 -04:00
- Website: https://www.terraform.io
- Provider: [kreuzwerker/docker](https://registry.terraform.io/providers/kreuzwerker/docker/latest)
- Slack: [@gophers/terraform-provider-docker](https://gophers.slack.com/archives/C01G9TN5V36)
2017-06-05 16:59:08 -04:00
2020-12-24 10:27:42 -05:00
## Requirements
- [Terraform](https://www.terraform.io/downloads.html) >=0.12.x
- [Go](https://golang.org/doc/install) 1.15.x (to build the provider plugin)
2017-06-05 16:59:08 -04:00
2020-12-24 10:27:42 -05:00
## Building The Provider
2017-06-05 16:59:08 -04:00
```sh
$ git clone git@github.com:kreuzwerker/terraform-provider-docker
$ make build
2017-06-05 16:59:08 -04:00
```
2020-12-24 10:27:42 -05:00
## Example usage
```hcl
2020-12-24 10:27:42 -05:00
# Set the required provider and versions
terraform {
required_providers {
2020-12-26 08:44:09 -05:00
# We recommend pinning to the specific version of the Docker Provider you're using
2020-12-24 10:27:42 -05:00
# since new versions are released frequently
docker = {
source = "kreuzwerker/docker"
2021-06-22 11:32:10 -04:00
version = "2.13.0"
2020-12-24 10:27:42 -05:00
}
}
}
2020-12-24 10:27:42 -05:00
# Configure the docker provider
provider "docker" {
}
2020-12-24 10:27:42 -05:00
# Create a docker image resource
# -> docker pull nginx:latest
2021-03-25 06:50:57 -04:00
resource "docker_image" "nginx" {
name = "nginx:latest"
2020-12-24 10:27:42 -05:00
keep_locally = true
}
2020-12-24 10:27:42 -05:00
# Create a docker container resource
# -> same as 'docker run --name nginx -p8080:80 -d nginx:latest'
2021-03-25 06:50:57 -04:00
resource "docker_container" "nginx" {
name = "nginx"
image = docker_image.nginx.latest
ports {
external = 8080
internal = 80
}
}
# Or create a service resource
# -> same as 'docker service create -d -p 8081:80 --name nginx-service --replicas 2 nginx:latest'
resource "docker_service" "nginx_service" {
name = "nginx-service"
task_spec {
container_spec {
image = docker_image.nginx.repo_digest
}
}
mode {
replicated {
replicas = 2
}
}
endpoint_spec {
ports {
published_port = 8081
target_port = 80
}
}
2020-12-24 10:27:42 -05:00
}
```