Keeping your environments in sync has been a challenge for software development for a long time. Developers tend to install their own versions of languages, databases, services etc. Doing so manually results in not only inconsistencies between dev and prod, but also from developer to developer, resulting in the always wonderful ""It works on my machine"" syndrome. Various tools have strived to solve this problem: MAMP, XAMP, VirtualBox, Vargrant, Puppet, Chef, homestead, etc. These are all steps in the right direction, but they're often heavy and require developers to learn new skills to work with them. In this talk, I'll be showing you how to Dockerize a new or existing project in such a way that the developers that use the project barely even know they are using Docker. Getting a new dev up to speed on a new project with a factory fresh machine is literally just a matter of installing Docker and check out the source code. That's it! Some of the benefits you'll see from using this approach:
Onboard new devs in minutes.
Have projects with unique (often incompatible) dependencies on a single machine.
Dockerized environment that acts like natively installed tools
Version locking of the tech stack
Updates to dependencies automatically distributed to other developers
Easily extended into CI/CD