mirror of
https://github.com/kreuzwerker/terraform-provider-docker.git
synced 2025-12-26 09:39:36 -05:00
Terraform Provider - Docker
* fix: service container wait only apply if the destroy grace period is larger than 0s. Interpret also the wait result chan and errors * chore(service): explains why we ignore certain errors * chore: readds terraform-plugin-docs * docs(service): explains the behavior if the grace period is 0s * fix(service): ignore certain errors on wait error * refactor: introduce more speaking error contains ignorable message method because it's more precise on what's happening in the code |
||
|---|---|---|
| .github | ||
| docs | ||
| examples | ||
| internal/provider | ||
| scripts | ||
| templates | ||
| testdata | ||
| tools | ||
| .gitignore | ||
| .go-version | ||
| .golangci.yml | ||
| .goreleaser.yml | ||
| .markdownlinkcheck.json | ||
| .markdownlint.yml | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| GNUmakefile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| README.md | ||
| renovate.json5 | ||
Terraform Provider
- Website: https://www.terraform.io
- Provider: kreuzwerker/docker
- Slack: @gophers/terraform-provider-docker
Requirements
Building The Provider
$ git clone git@github.com:kreuzwerker/terraform-provider-docker
$ make build
Example usage
# Set the required provider and versions
terraform {
required_providers {
# We recommend pinning to the specific version of the Docker Provider you're using
# since new versions are released frequently
docker = {
source = "kreuzwerker/docker"
version = "2.12.2"
}
}
}
# Configure the docker provider
provider "docker" {
}
# Create a docker image resource
# -> docker pull nginx:latest
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = true
}
# Create a docker container resource
# -> same as 'docker run --name nginx -p8080:80 -d nginx:latest'
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
}
}
}