Dockerize all the things!

Logo of Rainier IT and Docker outlined in green with text above: "Dockerizing all the things!"
Rainier IT && Docker

Introduction to Docker: Ship Your Code, Not Your Headaches

‘Ever heard a developer say, “But it worked on my machine!”? That phrase highlights one of the biggest headaches in software development: inconsistent environments. What if you could package your entire application—including all its code, libraries, dependencies, and configuration—into a single, standardized, isolated unit that runs identically everywhere?

What is Docker?

Docker is an open platform that uses containerization technology to solve this problem. Think of a Docker container like a small, self-contained moving box for your application.

Containers are lightweight, executable packages that bundle everything needed to run a piece of software.

Unlike traditional Virtual Machines (VMs), which require a full guest operating system (OS), Docker containers share the host OS kernel. This makes them much more efficient, starting up in seconds and consuming far fewer resources.’ ~Gemini 3.0 prompt about Docker


How Rainier IT Uses Docker

For our various hosted services, we enjoy using an approach that has served well:

  1. Create the codebase and keep in source code management, such as Github.
  2. Map that repo where ever we need, for example a website at /var/www/<repo>.
  3. Dockerize it at that mount point, mounting the volume inside docker to the repo.
  4. Bob is your Uncle!

And while this will not cut it on an enterprise level, we are using enterprise tools (save for maybe Kubernetes to scale) to help “codify” all things, as well. With this approach, proper documentation, automation, logging, and reporting…you are well off to keeping healthy services.

This approach is also able to be quickly deployed in a new environment, and in the recent AWS outage Rainier IT was able to respond with serving the website from our internal cloud infrastructure. This was as quick as cloning the repo, docker-compose up, changing DNS to point to our cloud, and again…(after some nginx reverse proxy blocks to “route” our site to our VM), Bob is your Uncle!

Other examples of things we dockerize besides the website are internal “tools” such as Wiki.js for documentation, backend API servers, our WordPress blog site, network based ad blocking, and although we use Google Workspace, we also have AIO (All in one) Nextcloud dockerized, and it is beautiful:


Updates are usually as easy as pulling the newest image of your favorite app, such as Apache, Python, Debian, Node.js, you get it. Pair that with regular backups, and you have a pretty bullet proof solution for keeping things running.

We also employ Ansible and Jenkins to schedule jobs and keep the platform updated and baselined, as well as low level reporting and other maintenance activities. Scaling is easy with Ansible, and the module library is powerful. Create your own if you like.

Let me know what you think of Docker and how you use it uniquely in environments you deal with, I am always finding new ways to put it to use.

~Christopher

Christopher Engelhardt

Rainier IT

Rainier IT

Leave a Reply

Your email address will not be published. Required fields are marked *