Back to Articles

Why I Containerize Everything

4 min

There used to be a very specific kind of anxiety involved in shipping software. You would build a feature locally, test it thoroughly on your own machine, and then pray it worked when deployed to a server. Inevitably, it didn't. You'd spend three hours debugging hidden environment variables or deeply nested dependency versions, eventually crying over a missing global package.

That was the "Before".

Getting my IBM certification in container deployment completely transformed my engineering philosophy. Now? It's a Dockerfile first, even for a weekend school project. Containerizing from day zero isn't premature optimization; it's a guarantee of sanity. It creates an isolated, predictable environment where "it works on my machine" translates flawlessly to "it works in production."

The moment you shift your mindset to "containers first," you stop fighting with deployment environments and start actually engineering.

The Power of the Pipeline

A perfect example of this in action was during my internship at the Technology University of the Shannon (TUS). I was tasked with designing a server-side web application for a meat supplier. It wasn't a simple monolithic app—it required a Java Spring Boot backend, a MySQL database, and a React frontend.

Before my certification, setting up that environment locally for another developer to review would have involved a multi-page read-me and an hour of troubleshooting. Instead, I wired the entire architecture into a single docker-compose.yml.

One command—docker-compose up—and the entire microservice ecosystem spun up locally, health-checked, networked, and ready to serve traffic. Writing multi-stage builds and utilizing strict environment variables meant there was zero drift between my development laptop and the staging server.

Knowing When Not to Containerize

However, engineering maturity isn't just knowing how to use a tool—it's knowing when not to.

If I'm standing up a static portfolio site or a plain React frontend with no complex backend dependencies, I won't reach for Docker. Deployments on modern edge networks like Vercel or Netlify provide CI/CD pipelines out-of-the-box that handle static builds elegantly. Forcing a container into a purely static workflow adds overhead without solving a problem.

For everything else? Wrap it in a container.