On his blog Matt Stauffer published a new post explaining the steps required to deploy your app without any downtime.

The reason you're getting zero-downtime deploy from these tools is because the entire deploy process—clone, composer install, etc.—doesn't happen in the directory that is currently serving your site. Instead, each new release gets its own separate "release" directory, all while your site is still being served from its current "release" directory.


In my own projects I handle these capistrano like deploys using a custom Envoy script: https://github.com/spatie/blender/blob/master/Envoy.blade.php