Everything nomploy runs ends up as a Nomad job. There are a few ways to get there depending on what you're deploying.
For an Application or Database service you fill in settings (source, image/build, env, ports, health, resources, replicas) and nomploy renders the Nomad jobspec for you. This is the path most users use — see Getting Started for a walkthrough, and Autoscaling and GPU workloads for the advanced knobs.
A Compose service gives you three deploy styles. You pick the style when you create the service, via the Compose Type selector:
| Selector option | What it does |
|---|---|
| docker-compose | (Legacy Swarm-style compose.) |
| Nomad (compose or HCL jobspec) | The default. Accepts either a Docker Compose file or a native Nomad HCL job — auto-detected. |
| Nomad Pack | Deploys a Nomad Pack. |
The Deploy Settings card shows a read-only badge (Compose / Nomad / Nomad Pack) reflecting the type.
Under Nomad (compose or HCL jobspec), if your file is a Docker Compose file, nomploy translates it to an equivalent Nomad job at deploy time:
- Each service becomes a task; ports, env, health checks, resources and replicas are carried over.
- Multi-replica services get a soft
spreadacross nodes. - Every allocation gets a
network.dnsblock pointing at the cluster DNS servers, and Consul service registrations (with Traefik tags for any domains you've added) so ingress works automatically. docker compose build+docker compose pushrun beforenomad job run.
You don't do anything special — just paste your compose file and deploy.
Sometimes you want full control. Under the same Nomad (compose or HCL
jobspec) type, if your file is a real Nomad job file — it contains a
job "<name>" { … } block — nomploy detects that and deploys it verbatim:
no translation, no compose build/push, no variable substitution. This is the
"deploy using Nomad syntax" path.
Use it when you need Nomad features that compose can't express (task groups,
templates, volume/csi, constraint, sidecars, and so on).
Choose Nomad Pack to deploy a pack from the community registry or your own. The Deploy Settings card (Nomad Pack) has:
- Pack — the pack name, e.g.
traefikorhello_world. - Custom registry (optional) — a git URL. Leave blank to use the community registry; when set, it's added as a registry before the run.
- Variables (HCL) — pack variables (
count = 2,region = "global", …), passed as--var-file. Leave empty to use the pack's defaults.
Click Save, then Deploy to run the pack (nomad-pack run). Stop/delete
tear the pack down (nomad-pack destroy).
Pack and registry values are validated to a safe character set, since they become part of the
nomad-packcommand line.
Regardless of path, deployment is health-gated: the generated jobs use an
update block with auto_revert, so a failed rollout rolls back to the last
healthy version. Watch the deployment logs stream live in the UI.