mirror of
https://github.com/kreuzwerker/terraform-provider-docker.git
synced 2026-01-24 23:52:57 -05:00
* fix(service): remove image name suppress function * feat: add docker image data-source * docs(service): add example for iamge datasource usage * fix: image repo digest with tag determination * fix: always return a repoDigest * fix(image): deprecation notice for latest attribute * fix(ci): explicitly go get tfplugindocs * fix(ci): remove gocenter.io proxy
79 lines
1.7 KiB
Markdown
79 lines
1.7 KiB
Markdown
# Terraform Provider
|
|
|
|
- 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)
|
|
|
|
|
|
## 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)
|
|
|
|
## Building The Provider
|
|
|
|
```sh
|
|
$ git clone git@github.com:kreuzwerker/terraform-provider-docker
|
|
$ make build
|
|
```
|
|
|
|
## Example usage
|
|
```hcl
|
|
# 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
|
|
}
|
|
}
|
|
}
|
|
```
|