I'm running Docker (specifically Dokku) because it drastically simplifies deploying new builds, and graduating those builds between environments.
I know a large part of this article was that Docker complicates rather than simplifies the situation. I guess if you're trying to be a Docker purist (for no reason) then sure. The same is generally true if you try be a purist of any kind.
git push deploy/uat
and I didn't have to write a single deployment script to achieve it.Plus, by using Dokku I get the benefits of containerised apps.
Something that's more declarative is definitely superior. Why? Because it will be shorter and easier to debug. I am not a fan of `git push` as a deployment strategy (because git is a version control tool, not a deployment tool), but it does force you to create and use a system that's by definition declarative. This is why I use dokku for my new projects.
The reason why I am using Docker is the forced honesty on the environment side, if your app runs on your laptop it does not mean it will run on the production boxes. If the Docker container runs on your laptop it gives you higher confidence that it will run on the production infra. No missing JARs, environment variables, misconfigured classpaths, etc.
Application and database servers are different animals. Not sure why a 'hybrid' approach would be surprising or unappealing.