Automating Docker Infrastructure with Terraform Day - 62

ยท

2 min read

Introduction

Terraform, an open-source Infrastructure as Code (IaC) tool, empowers users to define and provision infrastructure using a declarative configuration language. In this guide, we will walk through creating a Terraform script to efficiently manage Docker containers and images, with a specific focus on setting up and running an Nginx container.

Task-01: Provider Block

The initial step is to configure the Docker provider using the provider block in the Terraform script. This block specifies the plugin and its version that Terraform should utilize for managing resources.

COPY

COPY

hclCopy codeterraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 2.21.0"
    }
  }
}

provider "docker" {}

In this script snippet, we declare that the Terraform script necessitates the Docker provider from the specified source and version. The provider block configures the Docker provider for managing Docker resources.

Task-02: Resource Blocks for Nginx Docker Image and Container

Next, let's create resource blocks to define the Nginx Docker image and the container that will run the Nginx application.

Docker Image Resource Block

COPY

COPY

hclCopy coderesource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

In this resource block, we specify that a Docker image named "nginx:latest" should be utilized. The keep_locally attribute is set to false, indicating that the image should not be kept locally.

Docker Container Resource Block

COPY

COPY

hclCopy coderesource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 80
  }
}

Here, we define a Docker container named "tutorial" based on the Nginx image specified earlier. Additionally, we specify that the container should map port 80 from the internal network to port 80 externally.

Task-03: Docker Installation (If not installed)

In case Docker is not installed on the system where Terraform will be executed, the following commands can be used to install Docker:

COPY

COPY

bashCopy codesudo apt-get install docker.io
sudo docker ps
sudo chown $USER /var/run/docker.sock

These commands install Docker, verify running Docker processes, and adjust permissions for the Docker socket.

Conclusion

With the provided Terraform script, managing Docker resources for an Nginx container becomes straightforward. The script ensures the Docker provider is configured correctly, the Nginx Docker image is defined, and a container based on that image is set up with the specified configurations. Customize the script as needed to meet your specific infrastructure requirements.

Happy Terraforming and Dockering!

ย