Our development team uses Vagrant-powered virtual machines for local development, a multi-tenant staging environment for client demos, and manages multiple production servers for client websites. Until recently, every system in that fragile chain was running a different version of PHP.
And by “fragile chain” I mean this system caused headaches for the team. Every. Single. Day.
To resolve the problem, I’ve introduced the team to Docker, using containers to wrap every version of PHP we use and host all of them on the same machine at the same time. Our local Vagrant environments still allow us to code locally, but we can dynamically select the version of PHP we’re coding against with a cookie. The multi-tenant staging environment still works, but every staging instance can target a specific version of PHP.
Finally, we can use the same version of PHP at every level of the chain and never see another syntax error because an engineer developing locally against PHP 5.6 pushed code to a server running PHP 5.3. Want to see how I set this up for my team? Great! Everyone is open source and I’ll walk you through every step – then you can help Dockerize your team’s development environments, too!