Here I’ll share my experience in implementing Docker for quick configuration of a scalable dev environment for developers. I’ll briefly talk about the tasks that confronted me and the tools that were chosen to solve these problems. To get it out of the way – no, I’m not sponsored or affiliated with Docker, it’s just a darn useful tool.
Here’s a short story:
A few months ago CEO of a startup contacted me via LinkedIn with a proposal to evaluate his web-project built on Laravel. They’ve already had 8 developers and the company was growing faster than expected, so they needed to onboard coders fast. At the beginning of our discussion he asked me to analyze and go through the project as a Software Consultant.
Going through the entire thing took 5 days. After that I sent a report: technically everything was sound and code was almost clear, there were only remarks on queries in database and using Query Builder Laravel. Anyways, the problem was something else: with a recruitment drive they were planning, adding new coders to the project would be a costly, time-consuming nightmare.
When a new person is introduced to your team, you need to give access to all sources and set up an environment that includes a web server, a php compiler and a database, this is the minimum set. Depending on a project, the environment may include:
- Queue server
- Full-text search
- Caching solutions
- Various useful developer tools, specific to each company
All these should be installed locally by the developer and be the same version as the rest of the team members have. And here are the potential challenges:
- After installation you need to implement configuration settings;
- The software is already installed, but it has a different version;
- It takes a long time, some systems are incompatible with others;
- Someone somewhere made a small mistake or is plain dumb;
Keep in mind setting this stuff up is not programming. You can be a genius coder and still waste days doing this stuff.
And the fact that developers work on different platforms (Windows, Linux, OS X) complicates things even more. This causes the famous “everything works on my machine, I don’t know what your problem is – try turning it off and on again”
My advise was to use docker so they won’t waste time at every turn when configuring the environment. Of which they would have to do a lot with upcoming updates.
That is why Docker exists in a nutshell, to simplify the dev process. Using it in your project, you will win the most valuable thing – time.
Following the development scenario in WAMP or LAMP will waste us said time.
Once having created the entire project environment, you can use Docker to load it into a “container”, ready to be “shipped”” to any coder. You can deploy any project to the new workplace in the shortest time and get to work straight away.
For those who are more technically minded, here’s my practical article on how exactly this is accomplished: