Settings

Theme

Show HN: Mushak – Zero config zero downtime Docker/Compose to server deployment

mushak.sh

27 points by hmontazeri 2 days ago · 15 comments

Reader

hmontazeriOP 2 days ago

Hi all,

I made Mushak out of frustrtaion. There are many amazing tools out there these days to deploy your apps to your own servers. I've used a shell script to deploy my apps many years (using Docker and Compose since 2016 or so).

Although tools like Dokku, Coolify and Kamal exists (and they are amazing) they all have tradeoffs. Dokku comes with the plugin system when it comes to DBs etc. which I don't like. Coolify since v4 it has 4 containers running to get started. Kamal is pretty awesome but the build process and config file which is mandatory and also secrets management is time consuming to get up and running.

Mushak is very simple. If you have A Docker or compose file, it should JUST WORK.

Create a .env.prod file in, and it will detect it and pushes it to the server if you want. You'll deploy to prod faster than you can believe it with zero config out of the box.

Hope this will help anyone out there, I really enjoy deploying my apps with it. Documentation will also clarify the architectural choices.

Best, Hamed

Imustaskforhelp 2 days ago

Fascinating stuff.

Personally what I ended up doing with my vps was to just have a docker-compose.yaml and then just docker-compose it to start it and then I have a custom script which would run a service at a port after which I can just "bash expose.sh subdomain.domain.app PORT" and it uses cloudflared/cloudflare tunnels under the loop and if someone wants a git like workflow, I recommend pushing docker images and then using watchtower (https://containrrr.dev/watchtower/)

I had tried to understand caddy but I instead went the cloudflare tunnels route.

josegonzalez a day ago

Dokku maintainer here.

This is pretty neat. I think using the compose yaml file to document what should be running is pretty powerful at smaller scales (though I'm hesitant to place data in docker volumes as people tend to delete things at will and then are shocked that their data is gone).

I once spoke with the manager of the Compose project and it was news to them that folks used it in production for deploys. The lack of tooling around zero-downtime restarts makes that frustrating, so it's exciting to see projects that introduce that in some fashion.

Cool stuff!

  • hmontazeriOP a day ago

    I love dokku, used it back in 2016. It’s a great project. I never understood the decision around the plugin ecosystem

    • josegonzalez a day ago

      There are just a ton of features that evolved separately from the core project. Plugins allow folks to do things in the project that the maintainers didn't envision or have time to maintain - that's actually how the datastores came to be. I think being extensible has made some things more difficult - particularly maintenance of the main project - but also made it have longevity for folks as they can mold the system to work as they'd like (the plethora of community plugins speak to that). It's a bit like how programming languages have modules or packages you can install/import into your app.

      The datastore plugins were initially external as there was a ton of movement in maintaining them and it was at a different pace from the main project, though I'm now working on ways to bring them back into the core as they've stabilized quite a bit over the past decade.

indigodaddy 2 days ago

I like this a lot, very neat and simple. Reminds me of Uncloud that was posted recently on HN:

https://news.ycombinator.com/item?id=46144275

  • hmontazeriOP 2 days ago

    I actually tried uncloud. Believe it or not I was too dumb to get it to work…

    • indigodaddy 2 days ago

      Right now I'm using Cosmos Cloud and it works nicely. But I'd actually prefer something a lot simpler and that uses Caddy. Basically exactly what you've done but where I can still easily understand the magic. I like that you explained the magic too in your docs. Great job.

jmpavlec 2 days ago

Looks interesting, barebones but in a good way. Seems to be a good fit for how I am currently hosting. Will give it a shot after the holidays.

Thanks!

kirovt 2 days ago

What template did you use for the landing page, if I may ask? Looks neat.

  • hmontazeriOP 2 days ago

    It’s regular vitepress and changed just the config for colors and added the footer bar with a vue component

Alifatisk 2 days ago

Looks similar to Docker rollout plugin https://docker-rollout.wowu.dev

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection