A solução preferida em um greenfield é ter um contêiner por serviço, portanto, um contêiner do Apache e um contêiner Mysql separado. Como o Apache vai gerar e se comunicar com o aplicativo diretamente na maioria das pilhas LAMP, eu não as separaria. Coloque ambos os contêineres dentro de uma definição docker-compose.yml e inicie-os juntos em uma rede privada (padrão com composição do docker). Isso dá a cada par de contêineres a capacidade de se referirem uns aos outros pelo dns no nome do contêiner e facilita as atualizações (você pode simplesmente trocar o contêiner do db sem recriar o servidor da web).
O aplicativo, quando carregado com um ambiente de script como o php, normalmente será instalado como um volume no contêiner do Apache.