infra/jobs/minecraft.nomad.hcl
2026-08-21 17:54:37 +02:00

84 lines
1.4 KiB
HCL

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