Well, folks, this is pretty much exactly what I was hoping for ... some discussion of the merits and demerits of various approaches to the issue. 🙂 What follows is free-form associational thinking and isn't directed at anyone in particular and isn't meant to be critical.
"Team" --- we've not got one. At least, not where Programming & DevOps are concerned.
Dependency Hell ... I'm quite familiar with this as a longstanding FreeBSD user. The amount of work they've gone to in order to try and eliminate this is astounding, but I still end up with it once in a while. And, this is pretty much what I have now. I have a "main" site, another with different branding depending on the particulars of the product/category in question, and a third which is the "mobile" version of the first. And I get a little tired of doing everything thrice ... but I also hate when changes to one project's dependent classes cause breakage in another project.
A "container" is more/less functionally equivalent to a "jail" in FreeBSD, which they've had for quite a bit longer than Docker's existed. But I've never looked into it.
As for the "only sane way" ... At this stage of the game I commit changes to production servers pretty near daily. I'm not sure we could ever say a product is "finished" enough to deploy all-at-once in a perfectly pristine environment. I WISH we could.
As for "bloated core interfaces", I'm not TOO scared of that just yet ... what about the concept of configuration via arguments, a la "Functional JavaScript" or Dave Cheney's Functional Options for Friendly APIs?
Oh, and I really need a vacation. 😛