Давайте кое что поправим.
Во-первых Dockerfile обязательно должен содержать либо CMD-инструкцию, либо ENTRYPOINT-инструкцию. В вашем случае - запустить веб-сервер Апач.
Во-вторых зачем вам проброс порта 9090 в контейнер? Уберите инструкцию EXPOSE, она вам сейчас не нужна.
Dockerfile:
FROM php:7.4-apache
COPY index.php /var/www/html/
CMD /usr/sbin/apache2ctl -D FOREGROUND
Теперь поправим docker-composer. Мы пробросим с хост-машины порт 9090 внутрь контейнера на порт 80:
version: '3'
services:
myapp:
build: .
ports:
- "9090:80"
В общем-то все.
$ docker-compose build
$ docker-compose up -d
и смотрим что получилось:
$ docker ps
должно быть что-то вроде:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2598ade6449 tmp_myapp "docker-php-entrypoi…" 5 minutes ago Up 5 minutes 0.0.0.0:9090->80/tcp, :::9090->80/tcp tmp_myapp_1
Ну остается только сделать http://localhost:9090