Modern, best-practices Debian-based Zoneminder container
IMPORTANT: This is a personal project only. PRs are accepted, but this is not supported and "issues" will likely not be fixed or responded to. This is only for people who understand the details of everything invovled, sorry.
This repo attempts to provide a modern, best-practices Docker image for current ZoneMinder versions, using a current Debian version base. The image provides ZoneMinder and Apache but (like a proper Docker image) requires an external MySQL server. The image is vehemently NOT auto-updating, as doing so in a Docker image is a mortal sin. If you want to update, then pull a newer tag.
NOTE: If you want to use the event server, then you'll need to mount the appropriate configuration files in to the image at /etc/zm/es_rules.json
, /etc/zm/zmeventnotification.ini
, and /etc/zm/secrets.ini
; examples are included in this repo.
In addition, the output of mod_status
is exposed at /server-status
.
- This is really only a very simple demo / example to show this image working and show what it can do; this method of running is completely unsuitable for real, long-term usage. To use this for real you'll want to set these Docker containers up so they start automatically (i.e. via systemd units), store data in an appropriate place (currently they store data in the directory they're run from), and are properly monitored and backed up (especially backups of the database).
- I've only tested the following on Linux. It should probably work on Mac. I'm not sure about Windows, I haven't used it since 2006.
- This image requires a separate, standalone MySQL/MariaDB database. The example docker-compose file runs one, but it's up to you to back the database up as needed.
- Either clone this git repo on the machine where you want to run it, or download the two
docker-compose
files and all of theEXAMPLE
files to that machine. - Remove the
EXAMPLE.
from the example file names, and edit the content of the files as needed. These are all documented elsewhere, and are all related to the ZM Event Notification server (ZMES) and object detection. If you don't care about ZMES and object detection, then these files can just be left as-is. - If the
docker-compose
command isn't already available on your system, install docker-compose. - In whichever docker-compose file you use (or both), change
ghcr.io/jantman/docker-zoneminder:latest
to the newest versioned tag of the image. - From that same directory,
docker-compose up
should start the database and then zoneminder. If you also want the MLAPI object detection, you can usedocker-compose -f docker-compose-mlapi.yml up
- Cut a branch and make some changes. Ideally build the Docker image locally to ensure it builds. Cut a PR. That will trigger a build, and will push the resulting image to Docker Hub with a tag of the commit SHA.
- Test that image.
- When the image is verified to work, merge the PR to
main
. - Add a new release version tag for main and push it; that will trigger a full release build and release the new version.