Files
nomad_mcp/nomad_mcp_job.nomad
2025-02-26 16:10:35 +07:00

100 lines
2.8 KiB
HCL

job "nomad-mcp" {
datacenters = ["jm"]
type = "service"
namespace = "development"
group "app" {
count = 1
network {
port "http" {
to = 8000
}
}
task "nomad-mcp" {
driver = "docker"
config {
image = "registry.dev.meisheng.group/nomad_mcp:20250226"
ports = ["http"]
command = "python"
args = ["-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
# Mount the local directory containing the code
mount {
type = "bind"
source = "local/nomad_mcp"
target = "/app"
readonly = false
}
}
# Pull code from Gitea
artifact {
source = "git::ssh://git@gitea.service.mesh:2222/Mei_Sheng_Textiles/nomad_mcp.git"
destination = "local/nomad_mcp"
options {
ref = "main" # or whichever branch/tag you want to use
sshkey = "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNBY01oYkNPVXhFOHBYQ3d5UEh0ZFR4aThHU0pzNEdTNXZ6ZTR6Tm1ueUYvUUFBQUtCQm5RZi9RWjBICi93QUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDQWNNaGJDT1V4RThwWEN3eVBIdGRUeGk4R1NKczRHUzV2emU0ek5tbnlGL1EKQUFBRURreWwzQlZlek9YUWZUNzZac0NkYTZPNTFnMExsb25EMEd6L2Y4SHh3dzRCd3lGc0k1VEVUeWxjTEREOGUxMVBHTAp3WkltemdaTG0vTjdqTTJhZklYOUFBQUFHR1JsY0d4dmVTQnJaWGtnWm05eUlHNXZiV0ZrWDIxamNBRUNBd1FGCi0tLS0tRU5EIE9QRU5TU0ggUFJJVkFURSBLRVktLS0tLQo="
}
}
env {
# Nomad connection settings
NOMAD_ADDR = "http://pjmldk01.ds.meisheng.group:4646"
NOMAD_NAMESPACE = "development"
NOMAD_SKIP_VERIFY = "true"
# API settings
PORT = "8000"
HOST = "0.0.0.0"
# Logging level
LOG_LEVEL = "INFO"
# Enable to make development easier
RELOAD = "true"
# Set PYTHONPATH to include the app directory
PYTHONPATH = "/app"
}
resources {
cpu = 200
memory = 256
}
service {
name = "nomad-mcp"
port = "http"
tags = [
"traefik.enable=true",
"traefik.http.routers.nomad-mcp.entryPoints=https",
"traefik.http.routers.nomad-mcp.rule=Host(`nomad_mcp.dev.meisheng.group`)",
"traefik.http.routers.nomad-mcp.middlewares=proxyheaders@consulcatalog"
]
check {
type = "http"
path = "/api/health"
interval = "10s"
timeout = "2s"
check_restart {
limit = 3
grace = "60s"
}
}
}
}
}
# Define update strategy
update {
max_parallel = 1
min_healthy_time = "30s"
healthy_deadline = "5m"
auto_revert = true
}
}