MariaDB backup sidecar image
1.9K
Lightweight MariaDB backup container that creates timestamped database dumps.
No rotation, pruning, encryption, or cloud upload ā bring your own retention policy.
docker run --rm \
--network app_default \ # Needed to connect to MariaDB server
-v /var/backups:/backups \
-e MARIADB_HOST=db \
-e MARIADB_USER=myuser \
-e MARIADB_PASSWORD=mypass \
-e MARIADB_DATABASE=mydb \
-e RUN_ONCE=1 \
peetvandesande/mariadb-backup
docker run -d --name mariadb-backup \
--network app_default \
-v /var/backups:/backups \
-e MARIADB_HOST=db \
-e MARIADB_USER=myuser \
-e MARIADB_PASSWORD=mypass \
-e MARIADB_DATABASE=mydb \
peetvandesande/mariadb-backup
Override schedule:
-v ./crontab:/etc/crontabs/root:ro
To run a backup before cron starts:
-e RUN_BACKUP_ON_START=1
Restore the latest matching dump:
docker run --rm \
--network app_default \
-v /var/backups:/backups \
-e MARIADB_HOST=db \
-e MARIADB_USER=myuser \
-e MARIADB_PASSWORD=mypass \
-e MARIADB_DATABASE=mydb \
peetvandesande/mariadb-backup restore
Restore a specific dump file:
docker run --rm \
--network app_default \
-v /var/backups:/backups \
-e MARIADB_HOST=db \
-e MARIADB_USER=myuser \
-e MARIADB_PASSWORD=mypass \
-e MARIADB_DATABASE=mydb \
peetvandesande/mariadb-backup restore /backups/mydb-20251106.sql.gz
| Variable | Default | Description |
|---|---|---|
MARIADB_USER | required | MariaDB username |
MARIADB_PASSWORD | required | MariaDB password |
MARIADB_DATABASE | required | Database name to dump |
MARIADB_HOST | db | Hostname or container name of MariaDB server |
MARIADB_PORT | 3306 | MariaDB port |
BACKUP_NAME_PREFIX | (unset) | Prefix for dump filenames |
BACKUPS_DIR | /backups | Directory for dump storage |
COMPRESS | gz | Compression type: gz, bz2, zst, or none |
COMPRESS_LEVEL | (auto) | Compression level for zst compressor |
VERIFY_SHA256 | 1 | 1 = write .sha256 checksum file |
CHOWN_UID | (unset) | Apply user ownership (if set) |
CHOWN_GID | (unset) | Apply group ownership (if set) |
CHMOD_MODE | (unset) | Apply mode to dump and checksum files e.g. 0640 |
RUN_ONCE | 0 | Run backup once and exit |
RUN_BACKUP_ON_START | 0 | Run backup before cron starts |
# Force UID=34, keep existing GID:
-e CHOWN_UID=34
# Force GID=34, keep existing UID:
-e CHOWN_GID=34
# Force both explicitly:
-e CHOWN_UID=34 -e CHOWN_GID=34
/backups/
āāā mydb-20251106.sql.gz
āāā mydb-20251106.sql.gz.sha256
| Tag | Description |
|---|---|
alpine (default) | Smallest runtime image |
dev | Work-in-progress branch images |
<version> | Tagged stable releases |
services:
mariadb-backup:
image: peetvandesande/mariadb-backup
environment:
MARIADB_HOST: db
MARIADB_USER: myuser
MARIADB_PASSWORD: mypass
MARIADB_DATABASE: mydb
VERIFY_SHA256: 1
CHOWN_MODE: "0640"
volumes:
- ./backups:/backups
depends_on:
- db
db:
image: mariadb:11.1
environment:
MARIADB_USER: myuser
MARIADB_PASSWORD: mypass
MARIADB_DATABASE: mydb
volumes:
- ./data:/var/lib/mysql
This setup runs a MariaDB container and a backup container side by side, with backups stored under ./backups on the host.
Full docs and restore guide available here:
ā https://github.com/peetvandesande/mariadb-backup/tree/main/docs/ā
Content type
Image
Digest
sha256:5c39725abā¦
Size
15.4 MB
Last updated
9 months ago
docker pull peetvandesande/mariadb-backup