DEV Community

Cover image for Deploying Docker-Compose Projects with Nomad Using raw_exec
Athreya aka Maneshwar
Athreya aka Maneshwar

Posted on • Edited on

Deploying Docker-Compose Projects with Nomad Using raw_exec

Hello, I'm Maneshwar. I'm building git-lrc, an AI code reviewer that runs on every commit. It is free, unlimited, and source-available on Github. Star Us to help devs discover the project. Do give it a try and share your feedback for improving the product.

---

TL;DR

You don’t need Nomad to parse your dockerr-compose.yml. Justgit cloneanddocker-compose up --buildviaraw_exec`. Done.

Context

I had a small project: a Go-based app that syncs data into Meilisearch. Locally, I used docker-compose to run two services:

  • Meilisearch – the search engine
  • searchsync – a Go app that reads JSON and pushes data to Meilisearch

Now I wanted to deploy this with Nomad.

The Problem

Nomad doesn’t natively support docker-compose. So I:

  1. Tried converting the compose file to Nomad jobs
  2. Got into volume mount hell
  3. Fought with constraint errors
  4. Tried building inside Docker
  5. Realized I was wasting time

So I gave up on Docker driver and used Nomad’s raw_exec instead.

The Plan

Let the raw exec driver:

  • Clone the repo
  • Run docker-compose up --build

It just works.

Prerequisites

  1. Docker Engine is installed on the target Nomad client node
  2. Docker Compose plugin installed manually:

bash
mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-x86_64 \
-o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose version # ✅ should show v2.x

  1. Your Nomad client has access to Git (via SSH key or HTTPS token)

Nomad Job File

Here's the final working deploy.hcl:

`hcl
job "searchsync-rawexec" {
datacenters = ["dc1"]
type = "batch"

group "searchsync" {
task "bootstrap-searchsync" {
driver = "raw_exec"

  config {
    command = "/bin/bash"
    args    = ["-c", <<EOT
Enter fullscreen mode Exit fullscreen mode

cd /tmp && \
git clone git@git.apps.hexmos.com:hexmos/commons/searchsync.git && \
cd searchsync && \
docker compose up --build
EOT
]
}

  constraint {
    attribute = "${node.unique.id}"
    value     = "a02c1701-53ae-1b96-5004-3d70c1227751"  # constraint to nats03 node
  }

  resources {
    cpu    = 500
    memory = 512
  }
}
Enter fullscreen mode Exit fullscreen mode

}
}
`

Deploy It

bash
nomad job run deploy.hcl

Done. No image push. No registry creds. Just clone and run.

Bonus: CI/CD Step

Here's the GitLab CI step:

yaml
deploy-searchsync:
stage: deploy-searchsync
tags:
- gcp-master
script:
- export NOMAD_ADDR="http://127.0.0.1:4646"
- nomad job stop searchsync-rawexec || true
- nomad job run deploy.hcl

Conclusion

Don't overcomplicate things. If your app runs with docker-compose, justrun it that way using Nomad's raw_exec. Let it do one job: boot up your service.

No variable mess. No volume hell. No hours lost converting YAML to HCL.


With LiveAPI, you can generate interactive API docs that allow users to search and execute endpoints directly from the browser.

Return only the cleaned text without any additional commentary:

git-lrc
*AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs -- without telling you. You often find out in production.

git-lrc fixes this. It hooks into git commit and reviews every diff before it lands. 60-second setup. Completely free.*

Any feedback or contributors are welcome! It's online, source-available, and ready for anyone to use.

⭐ Star it on GitHub:

GitHub logo HexmosTech / git-lrc

Free, Unlimited AI Code Reviews That Run on Commit

git-lrc logo

git-lrc

Free, Unlimited AI Code Reviews That Run on Commit



git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt



AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs -- without telling you. You often find out in production.

git-lrc fixes this. It hooks into git commit and reviews every diff before it lands. 60-second setup. Completely free.

See It In Action

See git-lrc catch serious security issues such as leaked credentials, expensive cloud operations, and sensitive material in log statements

git-lrc-intro-60s.mp4

Why

  • 🤖 AI agents silently break things. Code removed. Logic changed. Edge cases gone. You won't notice until production.
  • 🔍 Catch it before it ships. AI-powered inline comments show you exactly what changed and what looks wrong.
  • 🔁 Build a habit, ship better code. Regular review → fewer bugs → more robust code → better results in your team.
  • 🔗 Why git? Git is universal. Every editor, every IDE, every AI…

Top comments (0)