Skip to content

Instantly share code, notes, and snippets.

@rahulgayen
Created October 14, 2024 05:24
Show Gist options
  • Select an option

  • Save rahulgayen/bea99320d1c74fd8af5144714a5fe02f to your computer and use it in GitHub Desktop.

Select an option

Save rahulgayen/bea99320d1c74fd8af5144714a5fe02f to your computer and use it in GitHub Desktop.
Docker Terraform
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = ">= 3.0.0"
}
}
required_version = "~> 1.5"
}
provider "docker" {}
resource "docker_network" "hasura_network" {
name = "hasura_network"
}
resource "docker_volume" "hasura_db_data" {
name = "hasura_db_data"
}
resource "docker_container" "hasura" {
name = "hasura"
image = "hasura/graphql-engine:v2.42.0.ubi.amd64"
ports {
internal = 8080
external = 8080
}
networks_advanced {
name = docker_network.hasura_network.name
}
env = [
"HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:password@postgres:5432/hasura",
"HASURA_GRAPHQL_ENABLE_CONSOLE=true"
]
depends_on = [ docker_container.postgres ]
}
resource "docker_container" "postgres" {
name = "postgres"
image = "postgres:latest"
env=var.env_vars
# ["POSTGRES_USER=postgres", "POSTGRES_PASSWORD=password", "POSTGRES_DB=hasura"]
volumes {
volume_name = docker_volume.hasura_db_data.name
container_path = "/var/lib/postgresql/data"
}
networks_advanced {
name = docker_network.hasura_network.name
}
}
# variables
# variable "env_vars" {
# description = "ENV Vars"
# type = list(string)
# }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment