job "minecraft" { type = "batch" parameterized { meta_required = ["mode", "image"] meta_optional = ["plugins"] } meta { plugins = "" } group "lobby" { count = 1 network { mode = "bridge" port "minecraft" { to = 25565 } dns { servers = ["172.17.0.1"] } } service { name = "minecraft" port = "minecraft" address_mode = "alloc" meta { mode = "${NOMAD_META_MODE}" } check { type = "tcp" interval = "5s" timeout = "1s" } } task "download-plugins" { driver = "docker" lifecycle { hook = "prestart" sidecar = false } config { image = "busybox" command = "sh" volumes = ["../alloc/data:/mnt"] args = [ "-cxe", <<-EOF set -eu mkdir /mnt/plugins wget -P /mnt/plugins ${NOMAD_META_PLUGINS} EOF ] } } task "run" { driver = "docker" config { image = "${NOMAD_META_IMAGE}" force_pull = true ports = ["minecraft"] volumes = ["../alloc/data:/mnt"] } env { HOST_POSTGRES = "jdbc:postgresql://postgres.service.consul/scrow" HOST_NATS = "nats://nats.service.consul" } resources { cpu = 1000 # we already limit memory using java args } } } }