【Terraform】Terraform ~ Docker ~

■ はじめに

Terraform は、基本的には、
AWSなどのクラウド環境作成するためのツールだとは思うが
Docker でも利用できるので、学習用に利用する。

目次

【1】前提条件
【2】サンプル
 例1:Dockerイメージ「Nginx」からインストール
 補足:警告「The attribute "latest" is deprecated.」

【1】前提条件

* 以下の関連記事などを参考に、
 LinuxOS(WSL2)上に、Terraformがインストールされていること

Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224

【2】サンプル

例1:Dockerイメージ「Nginx」からインストール

# Set the required provider and versions
terraform {
  required_providers {
    # We recommend pinning to the specific version of the Docker Provider you're using
    # since new versions are released frequently
    docker = {
      source  = "kreuzwerker/docker"
      version = "3.0.2"
    }
  }
}

# Configure the docker provider
provider "docker" {
}

# Create a docker image resource
# -> docker pull nginx:latest
resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = true
}

# Create a docker container resource
# -> same as 'docker run --name nginx -p8080:80 -d nginx:latest'
resource "docker_container" "nginx" {
  name    = "nginx"
  image   = docker_image.nginx.image_id

  ports {
    external = 8080
    internal = 80
  }
}

コマンド例

# [1] 初期化
terraform init
# [2] ドライラン
terraform plan
# [3] アプライ
terraform apply
# [4] 動作確認 (HTMLが取得できたらOK)
curl http://localhost:8080
# [5] 後片付け
terraform destroy

補足:警告「The attribute "latest" is deprecated.」

https://dockerlabs.collabnix.com/advanced/automation/terraform/terraform-mac-nginx.html

などのサンプルだと
「image = docker_image.nginx.latest」部分で
警告「The attribute "latest" is deprecated. 
Refer to the provider documentation for details.」が出る。

https://github.com/kreuzwerker/terraform-provider-docker

関連記事

Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ AWS S3 ~
https://dk521123.hatenablog.com/entry/2023/04/09/104204
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
Terraform ~ AWS Secrets Manager ~
https://dk521123.hatenablog.com/entry/2023/04/11/152801