Почему PHP требует Apache или Nginx чтобы работать в docker контейнере?
какой смысл использовать Apachе или Nginx содержащий образ? Разве нельзя работать с контейнером содержащим только php?Разве нельзя работать с контейнером содержащим только php?
Можете. Вы можете поставить PHP-CLI контейнер и работать с ним без веб-сервера конечно жеFROM php:7.1-cli
Что позволит вам запускать консольные команды (композер туда же)
Если ставите PHP-FPM контейнер, то понятное дело вам нужен веб-сервер (гуглите принцип работы с Fast CGI). 
Нужен, если вы хотите общаться с приложением через HTTPFROM php:7.1-fpm
Можно установить PHP CLI и использовать встроенный веб-сервер.php -S localhost:8000
https://forums.docker.com/t/running-php-built-in-s...
https://hub.docker.com/_/php/
https://www.php.net/manual/ru/features.commandline...