Wenn du eh Docker nutzen willst, warum dann den WebServer lokal betreiben?
Es gibt php images und nginx images. Du kannst beides getrennt laufen lassen und packst einfach die beiden Container in ein Docker-Netz und kannst dann in der nginx config einfach angeben, dass PHP Anfragen an den PHP container gehen sollen.
Datenbanken gibts auch als Container und je nachdem welchen Container du bereits hast kannst du diesen DB container auch weiterverwenden.
Oben schreibst du was vonm Portainer, warum nutzt du es dann nicht? Du kannst ja da recht einfach einen Stack erstellen und dein Dockerfile reinkopieren, Portainer macht dann den Rest +-