Or I can sidestep all these questions, and just use the same Docker image everywhere, which will give me the same version of Postgres and the same config. I agree it shouldn’t contain any schema/data.
Or I can sidestep all these questions, and just use the same Docker image everywhere, which will give me the same version of Postgres and the same config. I agree it shouldn’t contain any schema/data.
Postgres is an open source product that has some traction, and even if it disappears next week you still have the source.
Linux is starting to catch on and you can even find places that support it.
The POSIX layer is widely implemented and even Windows and Mac have sone level of support.
What I’m saying is, you can choose from a wide variety of databases on pretty much any common OS and most of the features will just work on all of them.
Minor versions of a single database on different flavors of the same OS are not a big deal.
[0] Much more CPU and RAM needed.
[1] You rarely work with a fresh OS install; you'll have to install things, edit files in /etc/ or whatever, set firewall rules perhaps. For me at least, many of this comes with googling, say, "how do I allow an incoming TCP connection for a port range?". Ie, tiny details I don't want to memorize. I'll have to replicate these steps between the dev VM and the prod environment. If I use Docker, I can write these things into the Dockerfile and then just do "docker-compose up" in production, and it will just work. Also, I can commit that Dockerfile into a repo. It makes it much easier for others, or future-me, to understand what the dev-ops setup is like.