![](/static/253f0d9b/assets/icons/icon-96x96.png)
![](https://fry.gs/pictrs/image/c6832070-8625-4688-b9e5-5d519541e092.png)
No, that is counter intuitive. It may appear more expensive at first, but on the long run it is a lot more cheaper. It avoid vendor lock-in, recurring increase of dev costs and licensing and lots of other plagues of closed proprietary development like blackbox development and justification of hidden complexity as a driving factor on costs. I worked with legacy closed proprietary sw development and lock-in combined with legacy complexity made man-hour costs exorbitant. These are partially solved by open-sourcing, as kicking out a team and putting a new one is easier, but most importantly transparency as a driving factor on quality of development.
You can also replace common or shared attributes between your configs using env files: https://docs.docker.com/compose/environment-variables/set-environment-variables/#use-the-env_file-attribute
Things I put there: UIDs, GIDs, TZ, shared mount paths, etc.