I do not run Docker in production at all but I also do not develop any serious projects outside of Docker.
Installed on the host machine are only VSCode, Docker and Git.
You work on a project by cloning it, opening in VSCode and clicking on "Reopen in container".
This will spin up generic services like databases and then the actual app container as a VSCode Remote Container, with all the development tooling inside the container.
Does not matter if tooling changes between projects, any project can be worked on with a single click of "Reopen in container".
Comments
It seems I do the opposite of many commenters.
I do not run Docker in production at all but I also do not develop any serious projects outside of Docker.
Installed on the host machine are only VSCode, Docker and Git.
You work on a project by cloning it, opening in VSCode and clicking on "Reopen in container".
This will spin up generic services like databases and then the actual app container as a VSCode Remote Container, with all the development tooling inside the container.
Does not matter if tooling changes between projects, any project can be worked on with a single click of "Reopen in container".
Host machine stays clean.