In this example, you'll use Cloud Native Build (CNB) to implement infrastructure management with Terraform and Docker.
terraform initterraform planterraform applyterraform destroyThe main.tf file in the root directory defines Docker container resources:
nginx:latest imageterraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.1"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
master:
push:
- name: Terraform by Example
services:
- docker
docker:
image: hashicorp/terraform
stages:
- name: docker image ls
script: docker image ls
- name: docker ps
script: docker ps
- name: init
script: terraform init
- name: plan
script: terraform plan
- name: apply
script: terraform apply -auto-approve
- name: docker image ls
script: docker image ls
- name: docker ps
script: docker ps
Pipeline execution results:

Create a Terraform-ready development environment with .ide/Dockerfile:
FROM hashicorp/terraform as tf
FROM node:20
# Install vscode and extensions
RUN curl -fsSL https://code-server.dev/install.sh | sh &&\
code-server --install-extension hashicorp.terraform &&\
echo done
COPY --from=tf /bin/terraform /usr/local/bin/terraform
Click "Cloud Native Development" to create a web-based development environment:

Execute Terraform commands directly in the environment:
