job "grafana" { datacenters = ["dc1"] group "grafana" { count = 1 # TODO: Add backup task or job network { mode = "bridge" port "web" { host_network = "loopback" to = 3000 } } ephemeral_disk { migrate = true sticky = true } service { name = "grafana" port = "web" connect { sidecar_service { proxy { local_service_port = 3000 upstreams { destination_name = "prometheus" local_bind_port = 9090 } upstreams { destination_name = "loki" local_bind_port = 3100 } upstreams { destination_name = "mysql-server" local_bind_port = 6060 } } } sidecar_task { resources { cpu = 50 memory = 50 } } } check { type = "http" path = "/" port = "web" interval = "10s" timeout = "10s" } tags = [ "traefik.enable=true", ] } task "grafana-bootstrap" { driver = "docker" lifecycle { hook = "prestart" sidecar = false } config { image = "mysql:8" args = [ "/bin/bash", "-c", "/usr/bin/mysql --defaults-extra-file=/task/my.cnf < /task/bootstrap.sql", ] mount { type = "bind" source = "local/" target = "/task/" } } vault { policies = [ "access-tables", "nomad-task", ] } template { data = < 0 ~} left_delimiter = "<<<<" right_delimiter = ">>>>" %{ endif ~} } %{ endfor ~} resources { cpu = 100 memory = 200 } } } }