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) # }