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:
