Docker is good for packing programs, but we have simpler tool already in hand. At least for compiled languages. Go is making static binaries by default. Zig, Rust and other compiled languages can relatively easy configured to emit static binaries too.
You made your program working on your machine and now you need to show it to the world. You've got some options:
Let's look at this from newcomer's perspective. One already have success - there is binary and this binary doing what it's supposed to. How much trouble it'll be to make it accessible from the internet? Now somebody tells them - you need some CI/CD, and all this complications to accept connection from the internet via https and send some requests to other sites. Even the case with your own server - you should setup LetsEncrypt and caddy server to route traffic to your binary.
All you need for your deployment to be ok with current state of things in internet is https, openssl, autorestart, some storage for embedded DB, ability to get logs and some policy to implement zero downtime deploy. And we can do it with static binaries only, we dont need Dockerfile to pack one binary, all resources that can be embedded into binary already with go embed, rust embed & co.
Simple contract with your binary will be enough for server to make it work:
Deploy should be as easy as:
curl -d @mybinary https://staticbinary.online/deploy/$YOUR_TOKEN_HEREOR
scp mybinary $YOUR_TOKEN_HERE@staticbinary.online:~
For now deploy looks more like
curl --data-binary @mybinary -H "Content-Type: application/octet-stream" -XPOST staticbinary.online/deploy
Login via githubGithub authorization
Join Discord server if you want to try it out or discuss the idea:Discord
Or subscribe to newsletter about this service or static binary first approach in general:
Now i am focused on building prototype and i'll update this page and discord when i'll make one