job "postgres" { datacenters = ["alo"] group "db" { network { port "db" { static = 5432 } port "exporter" { to = 9187 } port "admin" { } } task "postgres" { driver = "docker" config { image = "postgres:15-alpine" ports = ["db"] volumes = [ "/data/compute/appdata/postgres:/var/lib/postgresql/data" ] } env { POSTGRES_PASSWORD = "${var.pg_password}" } service { name = "postgres" port = "db" check { type = "tcp" port = "db" interval = "30s" timeout = "2s" } } resources { cpu = 1000 memory = 512 } } task "exporter" { driver = "docker" config { image = "quay.io/prometheuscommunity/postgres-exporter" ports = ["exporter"] } env { DATA_SOURCE_NAME = "postgresql://postgres:${var.pg_password}@${NOMAD_ADDR_db}/postgres?sslmode=disable" } service { name = "postgres-exporter" port = "exporter" tags = ["metrics"] } } task "pgadmin" { driver = "docker" config { image = "dpage/pgadmin4:latest" ports = ["admin"] volumes = [ "/data/compute/appdata/pgadmin:/var/lib/pgadmin" ] } env { PGADMIN_LISTEN_PORT = "${NOMAD_PORT_admin}" PGADMIN_DEFAULT_EMAIL = "${var.default_email}" PGADMIN_DEFAULT_PASSWORD = "${var.default_password}" PGADMIN_DISABLE_POSTFIX = "true" PGADMIN_CONFIG_MAIL_SERVER = "'192.168.1.1'" } service { name = "pgadmin" port = "admin" tags = [ "traefik.enable=true", "traefik.http.routers.pgadmin.entryPoints=websecure", ] } } } } variable "pg_password" { type = string default = "Faelaishewohlees4nei" } variable "default_email" { type = string default = "petru@paler.net" } variable "default_password" { type = string default = "ahheina6aeki3Hu0aht3" }