Submitted by twovests in technology (edited )
I love self-hosting software on VPSes. I do it all the time. I've done it for years.
But the thing is that it can get very hard to deploy two different things on the same system. Maybe one thing wants php 7, and another wants php 8, and they both want to find it at php
. And god help you if one of them wants to upgrade to php 8.0.0.0.1
and your OS doesn't have php 8.0.0.0.1
in its package repo.
You can fix this, manually, if the software is configured to allow you to configure it. In practice, that becomes very fragile very quickly.
And to make things worse, if you want to move to another server, you need to have the precise set of configurations and changes you set up ready to go, at hand.
After years of this, you get jaded. You learn some tricks: (1) Write down everything you do to install a piece of software, and (2) Chroot, or even namespaces and cgroups (although I never learned these).
Eventually, you get so good at this, that you're deploying software through a series of shell scripts which do chroots, and--
ah fuck, congratulations,
You have just invented Docker!
"Chroot, cgroups, namespaces, and scripts" are 80% of the way to just being Docker. The other 20% is the thoughtful interface and community built around it.
It turns out that Docker is very very good, and probably the best thing to use to deploy most software on servers. It solves a real, actual, problem. It makes things much easier.
If software has a dependency that isn't named "libc
", I'd very much like to use it for Docker.
I was anti-Docker for awhile, since it carried with it the stigma of Bloated Bad New Software. Docker came around when I realized software just got worse and worse over time. (We have so much compute! Why is everything slower than it was 20 years ago? Am I losing my mind? It doesn't matter if Linux is fast when it still needs to load modern webpages! Aaaa!)
So, sorry Docker. I maligned you by associating you with bad things. But you are very very good.
I've seen the Docker light
Docker means no more dependency fighting. Docker means a (reasonable amount) of portability between servers. Docker has very little extra bloat on Linux, because it's not a VM. It's native Linux tooling. (And if you're not using a Linux server... Then, shoo, you're doing things the hard and bad way anyway. If you're using a Windows server, then Docker runs on a Linux VM, but you will already be dealing with so much bloat anyways.)
I learned Docker in June of 2024 (just 6 months ago!) to Save Just Post Forever. Since then, I used it for a dozen different things. It works so well on everything. I'm using it at work. I can't believe I've been a Docker hater for so long.
Kudos to Emma for putting in the work to make a production-ready Docker setup for Postmill, in addition to, y'know, making Postmill.
The thing is, I thought making a Dockerfile (and likely also a docker-compose.yml
) was standard for software, especially multi-service software (e.g. php + sql).
So, I went to stand up a phpBB instance for another thing, and I found out
a lot of people actually think Docker is stupid
and I felt sad.
There is no official phpBB Docker? Everyone on the phpBB phpBB thinks an official phpBB Docker is stupid? :(
I'm happy that Discourse's Discourse's Docker discourse didn't deny Docker. But I don't wanna use Discourse.
I've seen this quite a bit: A software project with a non-trivial deployment process was not yet on the Docker train.
So, that makes me extra grateful that Postmill had a good Docker experience :D
TLDR: I thought "project has a Dockerfile" would be universal and I was wrong. Thank you again to Emma for having a great big prod-ready Docker set up. It also showed me that Docker is good actually
twovests OP wrote
now, if only i had something else i could call docker...