Как заставить volumes Docker compose не затирать данные из контейнера?
Запись

- src:/var/www/html

создаёт именованный том src в хранилище (docker volume ls). Надо указывать путь к каталогу, например, как относительный: ./src.

В образе по-хорошему ничего не надо заранее класть в этот каталог. Если нужно, чтобы в том попали какие-то данные, то их можно туда, например, распаковать при первом запуске контейнера из заготовленного архива. Но это в принципе считается антипаттерн, докер предполагает, что контейнер - не обёртка для запуска снаружи подсунутого содержимого - а законченное приложение.
Ожидаю что файлы из директории var/www/html попадут на хост в ./src

А где в документации описано такое поведение?