Terraform Provider - Docker
Find a file
renovate[bot] 4f5a7f81f1
fix(deps): update module github.com/docker/docker to v20.10.21+incompatible (#459)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-02 11:25:55 +01:00
.chglog chore: Automate changelog generation [skip ci] 2022-07-14 15:36:05 +02:00
.github fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.24.0 (#456) 2022-10-21 17:43:22 +02:00
assets docs: update readme with logos and subsections (#235) 2021-06-23 17:33:00 +02:00
docs feat: wait container healthy state (#467) 2022-11-02 09:19:45 +01:00
examples chore: Prepare release v2.22.0 2022-09-20 16:50:02 +02:00
internal/provider fix: Update shasum of busybox:1.35.0 tag in test. 2022-11-02 10:03:57 +01:00
scripts feat: Update used goversion to 1.18. (#449) 2022-09-01 15:35:14 +02:00
templates feat: Implement triggers attribute for docker_image. (#425) 2022-08-10 13:57:14 +02:00
testdata feat: add docker logs data source (#471) 2022-10-17 13:50:45 +02:00
tools fix: Switch to proper go tools mechanism to fix website-* workflows. (#399) 2022-07-11 14:55:15 +02:00
.gitignore chore/refactor tests (#201) 2021-05-31 16:11:49 +09:00
.go-version feat: Update used goversion to 1.18. (#449) 2022-09-01 15:35:14 +02:00
.golangci.yml feat: migrate to terraform-sdk v2 (#102) 2021-03-18 08:30:54 +01:00
.goreleaser.yml fix(deps): update module github.com/golangci/golangci-lint to v1.39.0 (#166) 2021-04-09 11:56:56 +02:00
.markdownlinkcheck.json feat/doc generation (#193) 2021-05-21 21:30:56 +09:00
.markdownlint.yml feat/doc generation (#193) 2021-05-21 21:30:56 +09:00
CHANGELOG.md chore: Prepare release v2.22.0 2022-09-20 16:50:02 +02:00
CODE_OF_CONDUCT.md docs: adds coc and contributing 2020-12-24 16:27:35 +01:00
CONTRIBUTING.md fix: Replace deprecated .latest attribute with new image_id. (#453) 2022-09-05 15:14:45 +02:00
GNUmakefile fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.24.0 (#456) 2022-10-21 17:43:22 +02:00
go.mod fix(deps): update module github.com/docker/docker to v20.10.21+incompatible (#459) 2022-11-02 11:25:55 +01:00
go.sum fix(deps): update module github.com/docker/docker to v20.10.21+incompatible (#459) 2022-11-02 11:25:55 +01:00
LICENSE initial commit 2017-06-05 20:59:08 +00:00
main.go fix: Correct provider name to match the public registry (#462) 2022-09-30 17:25:11 +02:00
README.md chore: Prepare release v2.22.0 2022-09-20 16:50:02 +02:00
renovate.json5 chore: Exclude examples directory from renovate. 2022-06-22 21:33:56 +02:00

Docker logo Terraform logo Kreuzwerker logo

Terraform Provider for Docker

Release Installs Registry License
Go Status Lint Status Go Report Card

Requirements

  • Terraform >=0.12.x
  • Go 1.18.x (to build the provider plugin)

Building The Provider

$ git clone git@github.com:kreuzwerker/terraform-provider-docker
$ make build

Example usage

Take a look at the examples in the documentation of the registry or use the following example:

# 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.22.0"
    }
  }
}

# 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.image_id

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

Contributing

The Terraform Docker Provider is the work of many of contributors. We appreciate your help!

To contribute, please read the contribution guidelines: Contributing to Terraform - Docker Provider

License

The Terraform Provider Docker is available to everyone under the terms of the Mozilla Public License Version 2.0. Take a look the LICENSE file.

Stargazers over time

Stargazers over time