Это зависит от договоренности, достигнутой вами с разработчиками. Задайте себе один вопрос: в какой структуре вы хотите работать: распределенной или централизованной.
Если ответ «распределен», вы можете сделать одну коробку на один проект. Вы не будете испортить, когда вы заработаете какой-либо проект, который получил последние модификации несколько лет назад. Но этот метод использует много памяти и пространства для хранения, и иногда это не имеет смысла, если большая часть ваших проектов основана на одной и той же производственной среде.
Если ответ «централизован», это означает, что для каждого проекта, построенного на одной и той же среде, достаточно одного окна. Это экономит много времени, но также легко сбить с толку, когда вы ищете старый проект. Вы можете настроить контейнер Docker для каждого проекта в своей коробке Vagrant.
Дополнительно я хотел бы предложить вам использование Packer для строительства ящиков. Это определенно ясный инструмент для этой цели, он может сделать «готовым к работе» коробку Vagrant для каждой среды виртуализации и выполнить сценарии оболочки/сценарии CMS. Просто поставьте в коробку все необходимое для производственной среды, позже разработчики могут добавить некоторые зависимости от пакета через предоставление Vagrant и поделиться им настройками Vagrantfile.