Skip to content

KISSmauticDKR: Mautic 7.2.2 Docker container, finally!

An All-in-One Mautic Docker container. Aiming at the simplest Mautic deployment. Batteries included.

All-in-one, single-container implementation of a full Mautic server. The simplest Mautic 7 Docker Container.

The current version is based on:
– Debian 13 (Trixie)
– MariaDB 11.8 LTS
– Apache 2.4
– PHP 8.4-FPM
– Mautic 7.2.2
– Plus everything Mautic 7 wants: ~20 PHP extensions, ImageMagick, GraphicsMagick, cron, and the Mautic cron jobs already installed

Two ways to use it:

docker run -d --name KISSmauticDKR-722 -p 8080:80 martechws/mautic:7.2.2

Takes a few seconds to launch, then go to http://localhost:8080 and log in.

Clone from repo and build locally

Download the components and build the image yourself, which also let's you modify it.

git clone https://github.com/AI-Vectoring/KISSMauticDKR

docker build -f dockerfile/7.2.2.Dockerfile . -t KISSmauticDKR:7.2.2

docker run -d --name KISSmauticDKR-722 -p 8080:80 KISSmauticDKR:7.2.2

Then open http://localhost:8080, and to get a shell inside:

docker exec -ti KISSmauticDKR-722 bash

Your credentials

The Mautic login and password are set at build time and are not yet parametrized at runtime. If you want a different database name, user or password, pass them when you start the container:

docker run -d -e MAUTIC_DB_PASSWORD=my-mautic-password --name KISSmauticDKR-722 -p 8080:80 martechws/mautic:7.2.2

or you can use the defaults:
MAUTIC_DB_NAME=mautic_db
MAUTIC_DB_USER=mautic_user
MAUTIC_DB_PASSWORD= define it with -e at runtime
MAUTIC_LOGIN=admin
MAUTIC_LOGIN_PWD=ChangeMeRightNow!

Behind a proxy

The container listens on port 80 and expects something in front of it to terminate TLS. Mautic needs to be told to trust the X-Forwarded-For and X-Forwarded-Proto headers, or it will record the proxy's IP as every contact's IP and generate http:// links for users who are on https://.

This image ships with trusted_proxies set to 0.0.0.0/0, which trusts any upstream proxy. If you would rather trust only your proxy's subnet, change the trusted_proxies line in local.php and rebuild.

Why one container?

The official Mautic images are excellent for complex deployments and separate concerns properly, which is exactly what you want for Kubernetes. But for a developer or a geeky marketer who wants to give Mautic a quick spin, they are serious overkill: you first have to understand how the images operate, then prepare the infrastructure, before you see a login screen.

KISS? All-in-One?

KISSmauticDKR deliberately breaks the one-service-per-container rule. The goal is simplicity, for the user. So we sacrifice a bit of KISS on the container creation side, so the user side is increadeably easy.
The Dockerfile is more complex, because it adds 3 services instead of one per container.

The Dockerfile and helper script are heavily commented so you can read what is happening and change it if you feel like it. This repository hosts them:
https://github.com/AI-Vectoring/KISSMauticDKR

Container or installer?

This container assumes certain infrastructure is available, like a proxy server with SSL termination and a docker capable host (for example with Kubernetes).

When you want the simplest possible way to run Mautic, there's an automated script that does not require docker or a proxy: AutoMautic.
It installs Mautic 7.2.2 on a fresh Debian 13 VPS in about four minutes and installs an SSL/TLS certificate for you with Certbot.
https://mauteam.org/install-mautic-7-2-2-with-zero-linux-knowledge-required-automautic/

Intended uses

  • A simple way to test Mautic, pull & play.
  • A live overview of Mautic 7.2.2’s requirements.
  • A starting point for Mautic code exploration and tinkering.
  • A way to play with Dockerization, Dockerfiles and image creation.

It is NOT meant as a production-ready image.

If you have ideas on how to make it clearer or simpler, post a comment below, send me an email, submit a PR or open an Issue.


What changed since 6.0.2

Debian was upgraded from 12 to 13.
PHP 8.4 is the Debian 13 default.
MariaDB was 11.4, not it's 11.8.

Both the Sury PHP repository and the MariaDB repository were unnecessary this time. All resolve from lsb_release -sc.

ntp
is gone. Replaced with ntpsec.
software-properties-common is gone. No replacement needed.
libhashkit2 was renamed to libhashkit2t64 by Debian's 64-bit time_t transition.

We now have achieved a greater level of persistence, every piece of state that matters has its own volume, this includes plugins and more importantly, files and images now have their own volume each instead of one single volume for media/

A bare Debian 13 image also ships without curl, wget, gnupg or a CA certificate bundle. The Dockerfile installs those first, before it touches any third-party repository key — otherwise the repository TLS cannot be verified and every apt update afterwards fails.

No Mautic Installation Wizard

The database is still pre-populated with a user, a Mautic database and the Mautic DB schema, so you don’t have to go through Mautic’s installation wizard. That was the whole point of the KISS approach and it has not changed.

Note that Mautic 7.2.2 ships 117 database migrations, up from 65 in 6.0.2. That is a substantial schema jump, and it is why the 7.2.2 image ships its own dump rather than reusing the 6.0.2 one.

Enjoy! and if you like it, or if you don't, comment here below...

Yosu Cadilla

Yosu Cadilla

My name is Yosu Cadilla, a Systems Analyst and Platform Engineer for mktg.dev I discovered Mautic in 2017 and since have specialized in: – Running Mautic for Marketing Agencies. – Running large Mautic instances, sometimes with millions of contacts. – Helping companies build and optimize their (usually Mautic) runtime infrastructure. If you are planning on deploying Mautic for your Marketing Agency, or you have a large Mautic Instance… Let's have a chat! [email protected]

Comments

Subscribe to mauteam.org

Join the newsletter and get the latest posts delivered straight to your inbox.

[email protected] Subscribe