Terraform Provider - Docker
Find a file
Martin c11d2d543a
fix: Align different docker urls to fix authentication issues (#927)
* fix: Align different docker urls to fix authentication issues

* chore: Fix acc-test changed files parsing
2026-05-11 21:37:57 +02:00
.chglog chore: Automate changelog generation [skip ci] 2022-07-14 15:36:05 +02:00
.github fix: Align different docker urls to fix authentication issues (#927) 2026-05-11 21:37:57 +02:00
assets docs: update readme with logos and subsections (#235) 2021-06-23 17:33:00 +02:00
docs chore: Prepare release v4.3.0 (#926) 2026-05-10 15:24:49 +02:00
examples chore: Prepare release v4.3.0 (#926) 2026-05-10 15:24:49 +02:00
internal fix: Align different docker urls to fix authentication issues (#927) 2026-05-11 21:37:57 +02:00
scripts feat: Add build option for additional contexts (#798) 2025-09-30 22:55:12 +02:00
templates feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
testdata feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
tools fix: Switch to proper go tools mechanism to fix website-* workflows. (#399) 2022-07-11 14:55:15 +02:00
.gitignore Add timeout support to docker_registry_image resource (#769) 2025-08-13 14:42:18 +02:00
.go-version chore: update Go version to 1.22 for consistency across workflows, jo… (#613) 2024-05-08 14:59:49 +02:00
.golangci.yml chore: Upgrade golangci-lint to next major version (#686) 2025-04-15 18:54:25 +02:00
.goreleaser-fast.yml feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
.goreleaser.yml feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
.markdownlinkcheck.json chore(ci): Add retryon429 for markdownlint (#736) 2025-06-04 19:51:09 +02:00
.markdownlint.yml feat/doc generation (#193) 2021-05-21 21:30:56 +09:00
.terraform-registry chore: Add file requested by hashicorp (#813) 2025-10-30 22:38:12 +01:00
CHANGELOG.md chore: Prepare release v4.3.0 (#926) 2026-05-10 15:24:49 +02:00
cliff.toml chore: Prepare release 4.2.0 (#907) 2026-04-14 22:38:57 +02:00
CODE_OF_CONDUCT.md docs: adds coc and contributing 2020-12-24 16:27:35 +01:00
CONTRIBUTING.md chore: Replace git-chglog with git-cliff (#904) 2026-04-12 19:33:27 +02:00
GNUmakefile chore: Prepare release 4.2.0 (#907) 2026-04-14 22:38:57 +02:00
go.mod feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
go.sum feat: Add docker_compose resource (#918) 2026-05-07 22:38:59 +02:00
LICENSE initial commit 2017-06-05 20:59:08 +00:00
main.go feat: Add muxing to introduce new plugin framework (#838) 2026-01-21 23:13:34 +01:00
README.md chore: Prepare release v4.3.0 (#926) 2026-05-10 15:24:49 +02:00
renovate.json5 chore(config): migrate config renovate.json5 (#925) 2026-05-10 10:36:16 +02:00

Docker logo Terraform logo

Terraform Provider for Docker

Release Installs Registry License
Acc Tests golangci-lint Go Report Card

Sponsored by Coder

What You Can Manage With This Provider

This provider covers more than basic Docker images and containers. With Terraform, you can manage:

Available data sources include images, image tags and manifests, containers, networks, plugins, and container logs. See the full provider documentation for the complete resource and data source list.

Documentation

The documentation for the provider is available on the Terraform Registry. You need at least Terraform 1.1.5 to use this provider.

Migration guides:

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"
      # or if you want to pull from opentfu
      source = "registry.opentofu.org/kreuzwerker/docker"
      version = "4.3.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
    }
  }
}

Building The Provider

Go 1.18.x (to build the provider plugin)

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

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

Sponsors

Coder