job "garage-staging" { type = "system" #datacenters = [ "neptune", "pluton" ] datacenters = [ "neptune" ] priority = 80 constraint { attribute = "${attr.cpu.arch}" value = "amd64" } group "garage-staging" { network { port "s3" { static = 3990 } port "rpc" { static = 3991 } port "web" { static = 3992 } port "k2v" { static = 3993 } port "admin" { static = 3909 } } update { max_parallel = 1 min_healthy_time = "30s" healthy_deadline = "5m" } # task "repair" { # lifecycle { # hook = "prestart" # sidecar = false # } # driver = "docker" # config { # image = "dxflrs/amd64_garage:v0.7.99-k2v" # command = "/garage" # args = [ "offline-repair", "--yes", "object_counters" ] # network_mode = "host" # volumes = [ # "/mnt/storage/garage-staging/data:/data", # "/mnt/ssd/garage-staging/meta:/meta", # "secrets/garage.toml:/etc/garage.toml", # ] # } # template { # data = file("../config/garage.toml") # destination = "secrets/garage.toml" # } # resources { # memory = 2000 # cpu = 1000 # } # } task "server" { driver = "docker" config { image = "dxflrs/amd64_garage:v0.8.0-beta2-k2v" command = "/garage" args = [ "server" ] network_mode = "host" volumes = [ "/mnt/storage/garage-staging/data:/data", "/mnt/ssd/garage-staging/meta:/meta", "secrets/garage.toml:/etc/garage.toml", ] } template { data = file("../config/garage.toml") destination = "secrets/garage.toml" } resources { memory = 2000 memory_max = 3000 cpu = 1000 } kill_signal = "SIGINT" kill_timeout = "20s" service { tags = [ "garage-staging-api", "tricot garage-staging.home.adnab.me", "tricot garage.staging.deuxfleurs.org", "tricot-add-header Access-Control-Allow-Origin *", ] port = 3990 address_mode = "driver" name = "garage-staging-api" check { type = "tcp" port = 3990 address_mode = "driver" interval = "60s" timeout = "5s" check_restart { limit = 3 grace = "90s" ignore_warnings = false } } } service { tags = [ "garage-staging-k2v-api", "tricot k2v.staging.deuxfleurs.org", "tricot-add-header Access-Control-Allow-Origin *", ] port = 3993 address_mode = "driver" name = "garage-staging-k2v-api" # check { # type = "tcp" # port = 3993 # address_mode = "driver" # interval = "60s" # timeout = "5s" # check_restart { # limit = 3 # grace = "90s" # ignore_warnings = false # } # } } service { tags = ["garage-staging-rpc"] port = 3991 address_mode = "driver" name = "garage-staging-rpc" check { type = "tcp" port = 3991 address_mode = "driver" interval = "60s" timeout = "5s" check_restart { limit = 3 grace = "90s" ignore_warnings = false } } } service { tags = [ "garage-staging-web", "tricot *.web.staging.deuxfleurs.org", "tricot staging.deuxfleurs.org", "tricot matrix.home.adnab.me/.well-known/matrix/server", "tricot-add-header Access-Control-Allow-Origin *", ] port = 3992 address_mode = "driver" name = "garage-staging-web" check { type = "tcp" port = 3992 address_mode = "driver" interval = "60s" timeout = "5s" check_restart { limit = 3 grace = "90s" ignore_warnings = false } } } service { tags = [ "garage-staging-admin", ] port = 3909 address_mode = "driver" name = "garage-staging-admin" } restart { interval = "30m" attempts = 10 delay = "15s" mode = "delay" } } } }