TerraformとDockerでNginxを構築してみた
TerraformとDockerでNginx構築に挑戦
TerraformとDockerを使ってNginxを構築しました。作業時間は約15分と手軽です。
今回は、その流れを簡潔にまとめます。この内容は「入門Terraform クラウド時代のインフラ統合管理(impress top gear)」という書籍を参考にしています。ただし、本書に記載されているコマンドがLinux環境向けであったため、Windows環境向けに一部変更しました。
※この記事では、TerraformおよびDockerの準備手順については省略しています。
構築手順
NginxコンテナをTerraformでデプロイ
まず、main.tfを作成してTerraformの設定を書きます。
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = ">= 3.0.0"
}
}
}
provider "docker" {
host = "tcp://localhost:2375" # Windows環境でのDocker接続設定
}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = true
}
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "beginner"
ports {
internal = 80
external = 8000
}
}
Windows環境での設定変更
「入門Terraform」ではLinux環境のコマンドが使用されていましたが、Windows環境で実行する際には以下の点を変更しました。
接続方法
provider "docker"セクションのhost設定をWindows用に調整します。
Windows環境
host = "tcp://localhost:2375"
または、Named Pipeを使用する場合:
host = "npipe:////./pipe/docker_engine"
Docker Desktopの設定
Windows環境でhost = "tcp://localhost:2375"を使用するには、Docker Desktopで以下の設定を有効にする必要があります。
Docker Desktop
Settings → General → Expose daemon on tcp://localhost:2375 without TLS を有効化
これにより、TerraformがDockerデーモンに接続できるようになります。
作成の流れ
そのあとはCLIにて以下のコマンドを順番に実行します
$ terraform init
$ terraform plan
$ terraform apply
作成後、tutorialコンテナが動作しており、ポート8000で待ち受けています。docker psで動作中のコンテナを確認可能です。
学び
Terraformのシンプルさを実感しました。
次の挑戦
上記の本を参考にしながら、Windows環境向けにカスタマイズしてNginxコンテナを構築しました。
本書ではより詳しくコードごとの解説もあります。
記事では簡潔に説明しましたが、さらに複雑な構成にも挑戦していきたいと思います。
次回は、AWSにてEC2を作成する簡単なコードを紹介予定です。
この記事を読んでいただきありがとうございました。