Terraform Provider - Docker
Find a file
Manuel Vogel bc554257e4
fix/service delete deadline (#227)
* 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
2021-06-22 22:11:32 +09:00
.github fix(deps): update module github.com/docker/docker to v20.10.7 (#218) 2021-06-21 09:55:55 +02:00
docs fix/service delete deadline (#227) 2021-06-22 22:11:32 +09:00
examples fix/service image name (#212) 2021-06-21 09:24:02 +02:00
internal/provider fix/service delete deadline (#227) 2021-06-22 22:11:32 +09:00
scripts fix(deps): update module github.com/docker/docker to v20.10.7 (#218) 2021-06-21 09:55:55 +02:00
templates fix/service image name (#212) 2021-06-21 09:24:02 +02:00
testdata chore(deps): update alpine docker tag to v3.14.0 (#225) 2021-06-21 09:26:12 +02:00
tools fix(deps): update module github.com/golangci/golangci-lint to v1.41.1 (#226) 2021-06-21 09:28:25 +02:00
.gitignore chore/refactor tests (#201) 2021-05-31 16:11:49 +09:00
.go-version feat: support darwin arm builds and golang 1.16 (#140) 2021-03-18 23:21:49 +09: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.12.2 2021-05-26 09:05:51 +02:00
CODE_OF_CONDUCT.md docs: adds coc and contributing 2020-12-24 16:27:35 +01:00
CONTRIBUTING.md docs: fix a few typos (#216) 2021-06-02 07:54:29 +02:00
GNUmakefile fix/service image name (#212) 2021-06-21 09:24:02 +02:00
go.mod fix/service delete deadline (#227) 2021-06-22 22:11:32 +09:00
go.sum fix/service delete deadline (#227) 2021-06-22 22:11:32 +09:00
LICENSE initial commit 2017-06-05 20:59:08 +00:00
main.go feat/doc generation (#193) 2021-05-21 21:30:56 +09:00
README.md fix/service image name (#212) 2021-06-21 09:24:02 +02:00
renovate.json5 chore(renovate): configure Renovate (#162) 2021-04-07 10:53:58 +02:00

Terraform Provider

Requirements

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

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