Docker gives you a single container that can do 50 times more things. It's version controlled, it's IaC, immutable, automated, adds resource limits, networking flexibility, lets you run your build system and your production system on anything, etc. All of that and more is baked in. Literally nothing is baked into your solution other than your code.
> Note, we did get a little more complicated and create a SystemD script to launch it at startup.
Anyone who thinks using SystemD is less complicated than using Docker isn't familiar with either.
> Total time to create our build and deploy system was so small we don’t even know how to measure it.
Why would you brag about this? It's like bragging that you don't use Git because it's too complicated, and you just use cp --backup=t main.go archive/ a whole lot. Simple!
> Now, think about how much time you’ve spent learning docker. Deploying docker. Troubleshooting docker. Even if you love it, it changed your life, it’s better than sliced bread and it solves world hunger… in the end can you really say it’s simpler than what we’ve got for free built in to golang?
You've got nothing built into golang. Nothing.
I can build a single binary in a half dozen languages. That doesn't give me implicit network abstraction. It doesn't give me version controlled delta diffs of build images. It doesn't remove the need for Configuration Management. It doesn't give me the ability to expose different filesystems to the app when I run it, or secrets, or users, ora specific environment with specific other applications. It doesn't give me... Jesus, like a million other features. Go is just a static app.
I'm sorry, but as clickbait goes, this one was rather embarrassing. If you aren't comfortable running production services with Docker, that's fine! But this reads like your solution is almost better than using Docker. If you all knew how to use Docker you'd have a lot more useful functionality for free.
4 years ago, Docker was a shit show; it's pretty stable now. I really recommend spending the time to get the team comfortable with it.
We run a service whose primary input is Dockerfiles; I'm not a Docker-hater. But doing the things we're talking about here in a systemd unit just isn't hard, and Docker, as you say, does a lot more than than systemd does.
Your comment would be better without the "rather embarrassing" swipe, for what it's worth.
There's less code for SystemD, but it's more complicated to actually use, and less useful. Docker is user friendly, and the features scale with workflow changes where systemd doesn't.
Docker gives you a single container that can do 50 times more things. It's version controlled, it's IaC, immutable, automated, adds resource limits, networking flexibility, lets you run your build system and your production system on anything, etc. All of that and more is baked in. Literally nothing is baked into your solution other than your code.
> Note, we did get a little more complicated and create a SystemD script to launch it at startup.
Anyone who thinks using SystemD is less complicated than using Docker isn't familiar with either.
> Total time to create our build and deploy system was so small we don’t even know how to measure it.
Why would you brag about this? It's like bragging that you don't use Git because it's too complicated, and you just use cp --backup=t main.go archive/ a whole lot. Simple!
> Now, think about how much time you’ve spent learning docker. Deploying docker. Troubleshooting docker. Even if you love it, it changed your life, it’s better than sliced bread and it solves world hunger… in the end can you really say it’s simpler than what we’ve got for free built in to golang?
You've got nothing built into golang. Nothing.
I can build a single binary in a half dozen languages. That doesn't give me implicit network abstraction. It doesn't give me version controlled delta diffs of build images. It doesn't remove the need for Configuration Management. It doesn't give me the ability to expose different filesystems to the app when I run it, or secrets, or users, ora specific environment with specific other applications. It doesn't give me... Jesus, like a million other features. Go is just a static app.
I'm sorry, but as clickbait goes, this one was rather embarrassing. If you aren't comfortable running production services with Docker, that's fine! But this reads like your solution is almost better than using Docker. If you all knew how to use Docker you'd have a lot more useful functionality for free.
4 years ago, Docker was a shit show; it's pretty stable now. I really recommend spending the time to get the team comfortable with it.