じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

Terraform でDocker Provider を使いましょう

概要

酒を飲んでるので何でも良いのですがTerraform Docker Provider を使いたくなったのでローカルでDockerコンテナのインフラ環境を構築してみます。あと、特に学びも書く予定がないのでここで「TerraformにDocker Provider があるんだ」という感想を持って読み終わって良いです。僕は別に移行してないです。

github.com

開発環境情報

$ terraform version
Terraform v1.4.0

Terraform 1.4 が GA になったのでついでに入れておきました。

www.hashicorp.com

同僚がブログ書いていたので紹介しておきます。

zenn.dev

デプロイするファイル

tutorial.tf というファイルをおきます。

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "3.0.1"
    }
  }
}

provider "docker" {
  host = "unix:///var/run/docker.sock"
}

# Pulls the image
resource "docker_image" "nginx" {
  name = "nginx:latest"
}

# Create a container
resource "docker_container" "foo" {
  image = docker_image.nginx.latest
  name  = "foo"
  ports {
    internal = 80
    external = 8080
  }
}

このコードでは、Docker Providerバージョン3.0.1を使用しています。プロバイダとしてDockerを指定し、Dockerホストのソケットへのパスを指定しています。docker_imageリソースで、最新のnginxイメージをプルします。そして、docker_containerリソースで、docker_image.nginx.latestをベースに新しいコンテナを作成します。80番ポートを内部ポートとしてマッピングし、8080番ポートを外部ポートとしてマッピングしています。

# Terraform初期化
terraform init

# プランの確認
terraform plan

# 実行
terraform apply

docker_containerリソースで作成したコンテナが起動しているはずです。docker psコマンドを使用して、コンテナが実行されているかどうかを確認できます。

眠くなったのでもう寝ます。