From hater to believer: Docker Edition
As a Semi Senior Engineer, I’m at that point in my career where I have enough experience and knowledge to design and build complex systems, with database integrations, caching strategies and third-party services, but I don’t yet know everything I could, or rather should, to produce the best work possible.
However, I don’t have yet enough experience to teach and lead others with those same tools, or to make the best possible decisions about what tools to use in specific situations. As an example, I’m still learning about AWS, their services and each of their use cases, despite having almost 2 years of experience working and running production applications with a few of them.
Today, though, I’m here to talk about my experience getting started with Docker, and how trying it out for myself changed my perspective on it completely.
The Hater Period
I used to be one of those developers that would literally go “Why are you wasting your time on Docker, dude?” I know, right? What on Earth was I even thinking? Well, I guess I wasn’t.
Here’s the thing. I used to think that all you did with docker was create a ever-running “cluster” to deploy your app to production. And if you know anything about Node.js app deployment, you’ve definitely heard about PM2.
And so I always thought that using Docker was an obnoxious overkill. Which when you think about it actually makes a good reason to not use a certain program, but my whole argument was nothing more than a straw man fallacy.
The Change
At last, I decided to see what all the fuzz was about with Docker about a week ago. I’m not gonna lie, I almost said “Fuck this, I’m out” when I went to the site and saw that I couldn’t just install it with a line on the Command but had to download an MSI (Microsoft Software Installer) to do so. And even more so when it took some time to get it done, but to be fair my computer is not exactly the latest and the greatest.
Once it was done, I followed the NodeJS tutorial to the letter. I was surprised when I read that we would install Node in the container, since of course that is not what I thought Docker did right? So ti was at that point that my opinion started to change. Cause if I can install Node for this project alone without having to install it in the entire system.
But that’s not all. Then I got to the part of running the new container. In detached mode. Suddenly, I no longer needed to keep the CLI open, and I could even keep working on different stuff in the exact same tab! Which is something you just cannot do if you’re using Node and/or nodemon.
And so you see, a believer was born.
The Believer Period
All drama aside though, I do think now that Docker is a great tool. I’m still getting the hang of it, and I do still revisit the tutorial a lot (and I mean, a lot), but there’s no denying that it is indeed a great tool. And to be absolutely fair, I have only run my NodeJS application in the container yet. Meaning I haven’t run any databases, Operating Systems, or any other software in there yet. So there’s a whole lot of possibilities I have yet to try out.
As Disney said, there’s a whole new world out there, and I am very much looking forward to learning about it with Docker.
If you read all the way through, feel free to follow me here on Medium or connect with me on LinkedIn, GitHub, and Twitter, and share the article if you liked it.