Le provider Docker
Le provider Docker permet de gerer des conteneurs en local, ideal pour apprendre sans compte cloud.
# providers.tf
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
}
}
provider "docker" {}
# main.tf
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "web" {
name = "mon-nginx"
image = docker_image.nginx.image_id
ports {
internal = 80
external = 8080
}
}
Reseaux Docker
resource "docker_network" "app_network" {
name = "app-network"
}
resource "docker_container" "web" {
name = "web"
image = docker_image.nginx.image_id
networks_advanced {
name = docker_network.app_network.name
}
}
resource "docker_container" "api" {
name = "api"
image = docker_image.node.image_id
networks_advanced {
name = docker_network.app_network.name
}
}
Volumes Docker
resource "docker_volume" "data" {
name = "app-data"
}
resource "docker_container" "db" {
name = "postgres"
image = docker_image.postgres.image_id
volumes {
volume_name = docker_volume.data.name
container_path = "/var/lib/postgresql/data"
}
env = [
"POSTGRES_PASSWORD=secret",
"POSTGRES_DB=myapp"
]
}
Avantage : Docker + Terraform en local = zero cout, feedback rapide, memes concepts que le cloud.