Как по мне лучше делать отдельный docker-compose для каждого проекта.
Сценарий приблизительно такой:
Создаёте конфиги для каждого image-а. Это позволит поднять окружение одной командой.
По поводу деплоя (с этим знаком только в теории) - знаю что у докера есть докер-сервер который готов принимать контейнеры на деплой. Т.е. скармливаете ему конфиг, он вам поднимет окружение обновит код и всё остальное.
Как-то так.