Upgrade You Digital Marketing Stack With Docker

Marketers now rely heavily on a complex multitude of software for tagging, analytics, CMS & more. But what if I told you there is an entire arsenal of tools that most marketers tend to overlook - and that a quick understanding of Docker containers is all that is needed?

Just a quick glance of what tools are available in the wild for docker containerized open source solutions:

Open Source Solutions that are customizable, auditable and trial-able with less vendor lock-in

  • Mautic Open-Source Marketing Automation Project
  • Plasuible Analytics open-source and privacy-friendly alternative to Google Analytics.
  • changedetection.io Detect website/landing page changes and trigger notification
  • Redash Connect and query your data sources, build dashboards to visualize data

Solutions that could boost customer journeys if integrated

  • Telegram Bot API HTTP API for creating Telegram Bots.
  • apprise Send notifications (SMS, telegram, browser..etc) to almost all popular services from a production ready micro-service
  • Huggin a hackable version of IFTTT or Zapier - read the web, watch for events, and take actions on your behalf.
  • docassemble Guided user interviews
  • OhMyForm Stunning embeddable forms for recruiting, market research, surveys and more.

Self-hostable SaaS software to keep your data on owned servers (some technical know how/resource maybe required)

  • matomo Google Analytics alternative that protects your data and your customers’ privacy
  • airbyte Extract Load Transform and centralize data from most popular marketing platforms. (Similar to FiveTran)
  • baserow Open source no-code database and Airtable alternative
  • Grafana Query, visualize, alert on, and understand your data no matter where it’s stored. Create, explore, and share all of your data through beautiful, flexible dashboards.
  • n8n Workflow automation


  • Free Here is a more comprehensive list of what is out there
  • Non-Free Here is a more comprehensive list of what is out there

Why Docker?


Containers are used to “Package Software into Standardized Units to Build, Share and Run your software” game consoles are an apt analogy if you had a game-boythese could be compared to the “plug and play” games cartridges. The container works very similarly - everything that is needed to run the software/game is housed in it.

Docker containers allow developer to build software and bundle all required runtime information into a neat package that runs everywhere more easily. This solves the problem “but it worked on my machine!” The other alternative is to figure out all the dependencies and build a native package for every environment (operating system…etc) you want to support

“But what does this developer issues have to with me, a marketer?” you ask -

“Most of the software I use are on a website neatly packed as a software-as-a-service (SaaS model)?”

Going beyond the limits of SaaS only solutions and learning how to run containerized services with docker locally on your computer, you could quickly and easily experiment with software that could be a game changer.

The beauty of this approach is that the bulk of your stack could be SaaS to save you time, but now you have the flexibility to explore useful solutions. This is especially useful for some pain points the SaaS offering doesn’t exist as the scope isn’t quite enough for others to build a whole businesses out of or simply for use cases where you can’t justify a monthly subscription fee for the way you’re using the solution.

Docker Concepts

Docker Image

Docker packages dependencies much like a recipe for baking a cake. Just like a recipe provides a list of ingredients and step-by-step instructions for making a cake, a Docker image provides all the components and dependencies required to run an application.

Here, the ingredients are libraries, packages, and dependencies and the steps to follow are the configuration and setup required for the software.

Docker Hub

The awesome thing is - a lot of these recipes are kept for everyone to use at - Docker Hub We’ll use this in a second.

Docker Container

While images are snapshots of the application and dependencies frozen in time - a container is the running instance of the image. Or the “cake” from your recipe. You could start stop and delete containers as needed.

Sample Workflow to get a container running

To run docker on your computer locally - download and install Docker Desktop once you have it installed we could start on our first hands-on - getting DOOM to run :

press Windows+R key or open your command prompt/powershell

docker run -p 8080:8080 mattipaksula/http-doom

a few things would have happened now. Firstly you would get the following complaint

>Unable to find image 'mattipaksula/http-doom:latest' locally

and this resolves itself with

latest: Pulling from mattipaksula/http-doom

This means docker is reaching out to Docker Hub and downloading the image you need (tagged latest) Now once you see:

> Serving HTTP on port 8080
> http://*:8080

that means it’s up and running! Go to your browser and got to http://localhost:8000

Boom - Doom is now running on your browser. What a thing of beauty - Thank you John Carmack! img.png

A few things are worth mentioning about the command

docker run -p 8080:8080 mattipaksula/http-doom

the “-p 8080:8080” is what is called a flag. A flag is a way to pass parameters to docker, in this case -p is flagging which port to use. There are many common flag

Think of port as a entryway to program, data flows through these into app. in this case it is specifying, 8080 of your localhost (outside to the container) being connected into the 8080 port of insider the container - in this case it allows you to “play” Doom

Lastly mattipaksula/http-doom is the name of the image you are using where mattipaksula is the repo where the image http-doom is stored.

We did mention the “inside” of the container - Other than running through ports we are also able to enter containers:

 docker exec -it <running_container_name_or_id> \bin\bash

This command brings you to the container’s prompt where you could execute bash commands

We have glossed over quite a few background items like why docker is so lightweight compared to VM and it’s layers concept and operational things like modifying dockerfiles, binding volumes, inspecting metadata.. general container management…etc

However, we have just taken a good first leap into this brave new world of exploring and running docker images and containers.

Have fun!