as someone who has to manage projects for multiple clients, I find docker + docker-compose to be the best solution. The overhead of docker is totally worth it because the container separation makes life so much easier.
all I need to work on a client project is basically:
cd /path/to/project
docker-compose build (just once)
docker-compose up