Docker has quickly become one of the tools that have helped make difficult environment setup and thing of the past. Chris Tankersley, a PHP developer and devops practitioner, has shared some about his own PHP Docker workflow in a new post to his site.
When it comes to Docker, I use Docker Compose to set up and link all of my containers together. It's rare that I have a single container, though many of my Sculpin-based sites live quite comfortably inside of an nginx container, but even those take advantage of volumes.
For his standard three-tier setup he defines a basic
docker-compose.yml configuration file with required services (nginx, PHP server, MySQL and Composer), local volume information and the links between them. With that working he uses another script to set up some PHP extensions and Composer as a service (making it a service provides isolation). He also includes the scripts he's written up to help run a few extra commands and execute the Composer and PHP commands much easier. He wraps the post up talking about how all of this fits into his overall workflow and how it relates to the deployment of the application into other environments.