This talk was given for DrupalHeart Camp in Zagreb, Croatia on May 19, 2017.
Local development is always a challenge. First of all there are a lot of components that should be matched to reflect the actual production server and then there are also versions of PHP, MySQL, MariaDB that are needed to be matched. And on top of that all, some configurations are really hard to set up on local machine. And after all is set up and working there comes another project with different setup and versions. Not to mention if there is a need to revert briefly for some bug fix of a previous one. And then, when you update your system, some things return to their defaults and you have to do it again. And so does any collaborator as you need to replicate environment to everyone.
One of the solutions was to use Vagrant, VirtualBox but for that you needed a very good one DevOps engineer who will set that up. And Vagrant and VirutalBox did use some serious resources, both memory and CPU. Then came native Docker for Mac and Windows. I know that Linux had that before but this time, the setup can be easily shared between platforms and collaborators and even stored in git with project.
My plan with this session is to show how easy it is to implement Docker Driven Drupal Development™ in your projects. You should also gain enough knowledge to be able to adapt it to any other project by understanding components of Docker ecosystem and greater picture of use case scenarios. I will suggest how to effectively structure your folders and customize configuration to match the needs of your project. I will explain the installation of Docker on all three platforms, introduce usage of docker-compose.yml control file tailored specifically for Drupal development and how to use PHPStorm IDE with Xdebug for full control of the application development.
This session will be technology introduction about the Docker, covering technology concepts and universal implementation. For the details of one of many Drupal solutions out there, check a follow up session, Docker4Drupal 2.0 for development.