Terraform avec Docker 22 min de lecture

Gerer Docker avec Terraform

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.