ConOps
GitOps for Docker Compose
Github: https://github.com/anuragxxd/conops
Website: https://conops.anuragxd.com
Push to Git → your server updates automatically. I genuinely like Kubernetes. The declarative model. Reconciliation loops.
The idea that a git push can trigger a deployment still feels clean and well designed.
But for my homelab and small side project it was too much. So I went back to Docker Compose. It’s simple. It works. When something breaks at 11pm, I can actually debug it.
The only thing I really missed was GitOps.
The problem
With plain Compose, my workflow looked like this:
- Make changes locally
- Push to Git
- SSH into the server
git pull && docker compose up -d
But, if I forgot that last step, the server drifted.
If I tweaked something directly on the box, Git was no longer the source of truth.
Two months later I wouldn’t even trust what was running anymore. Which is not a great feeling.
So I built ConOps
Nothing fancy. Just a small controller that keeps:
Running state == Git state
It:
- Watches your Git repo
- Pulls changes automatically
- Applies updates
- Detects drift and fixes it
If a container is stopped manually, it brings it back.
If the repo changes, it reconciles.
No dashboards. No click-ops. Just Git as truth.
How to run it
docker run -d \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
anurag1201/conops:latest
And you’re done. No CRDs. No etcd. No control plane. Just a small loop making sure things stay aligned.
Open source
It’s MIT licensed.
If you’re running Docker Compose on a server or homelab and kind of miss GitOps, this might help. Would love feedback. Issues. Criticism. Anything really.
And if you find it useful, please consider starring the repo:
https://github.com/anuragxxd/conops
Thanks!
Top comments (0)