Docker

Why I Can’t Live Without Docker Anymore

My journey with Docker began in 2017 while working on a project for Brunello Cucinelli. At the time, we had to use Docker to replicate the production environment, and for me, it was one of my first encounters with this technology.

As often happens with new and unfamiliar tools, it was hate at first sight. I couldn’t understand the difference between a Dockerfile and a docker-compose.yml, I had no clue what the instructions inside those files meant, and to top it off, I was working on Windows — in the pre-WSL era.

Docker on Windows: A Bumpy Ride

Anyone who has tried Docker on Windows (not WSL or Windows Server) knows that performance isn’t great. This is because Docker isn’t a traditional virtual machine; containers run on top of the host OS, and on Windows, this is much less efficient than on Linux.

The introduction of (Windows Subsystem for Linux) drastically improved the experience, allowing a Linux environment to run inside Windows and making Docker more usable. However, back in 2017, WSL wasn’t stable or widely adopted, and Docker remained a complex and frustrating tool.

At that time, only two members of my team had a basic understanding of Docker, which made it hard to figure out what to do when docker-compose up failed. To make things worse, we used Docker exclusively via Docker Desktop’s GUI, which hid all the real CLI commands being executed under the hood.

Switching to Linux: Game Changer

In 2022, I changed companies — and operating systems. I moved to , a well-known Linux distribution that allows Docker to run natively without Docker Desktop.

This shift changed everything. For the first time, I could clearly see what was happening behind the scenes. I could read and understand the configuration files, debug real errors, and run CLI commands with full control.

Docker was no longer a black box, but a powerful tool in my hands.

Sure, I could have started learning it earlier — Windows didn’t prevent me from studying the tech — but the reality is that it made everything harder and more frustrating.

Can’t Work Without It

Today, I can’t imagine working without Docker. I don’t want to install PHP (in all its versions), MySQL, or any other service directly on my machine. I want clean, isolated, reproducible environments that don’t interfere with my host OS.

I honestly don’t know how we managed to work on multiple projects with different dependencies in the past. Changing the $PATH, switching extensions, tweaking ports and configs… I still remember the frustration and anxiety of breaking something important.

Now, switching between projects and their dependencies is just a matter of two or three commands — often mapped to aliases — and each environment works exactly as needed.

Fast Start with a Docker Template

Another huge benefit is being able to start a brand-new project in seconds — even with a completely different stack. Want to test a new version of or PHP? No problem.

To make this even easier, I created a public GitHub repository with some base Docker configurations I frequently use:

🔗

The goal is to grow this repository over time, adding more technologies, with the help of contributors who know certain stacks better than I do. The idea is to have a solid, ready-to-use foundation for any new project — without having to copy and paste configs from previous repos.

If you’d like to contribute, you’re more than welcome! I’d love to see your PRs. 🙌

If you’d like to share your own Docker experience, or just chat about dev stuff, you can reach me .

And if you’re using a cool Docker template, I’d love to see it!