Можно засунуть все в один контейнер при желании. Странный вариант, но вполне работоспособный.
Можно держать контейнер с php+apache, а код приложения в папке рядом. Так же с node.
Не обязательно на разных портах, контейнеры можно вообще не открывать во внешнюю сеть, но тогда понадобится реверс-прокси. Это для разработки.
Можно сделать новый образ, наследуемый из php+apache и содержащий твое приложение.
Тогда достаточно будет залить один файл образа на сервер и запустить контейнер на его основе. Это для быстрого деплоя. Но надо будет у себя обновлять контейнер и повторять процедуру.