Skip to content

MariaDB

Description / nameInput element
Container Registry
Container Configuration Root Path
Timezone
User ID
Group ID
MariaDB Host Port
MariaDB /config Path

Build Status Last Commit

Drop-in replacement for MySQL built by the original authors — extends core MySQL functionality with alternate storage engines, server optimizations, and patches.

Port 3306
Registry ghcr.io/daemonless/mariadb
Source https://github.com/MariaDB/server
Website https://mariadb.org/

Version Tags

Tag Description Best For
11.4 / 11.4-pkg FreeBSD Quarterly. Uses stable, tested packages. Production stability.
11.4-pkg-latest FreeBSD Latest. Rolling package updates. Newest FreeBSD packages.
11.8 / 11.8-pkg / latest / pkg FreeBSD Quarterly. Uses stable, tested packages. Most users. Matches Linux Docker behavior.
11.8-pkg-latest / pkg-latest FreeBSD Latest. Rolling package updates. Newest FreeBSD packages.

Root Privileges Required

Podman on FreeBSD currently requires root. All commands must be run as root (or via doas/sudo).

Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.

Deployment

services:
  mariadb:
    image: ghcr.io/daemonless/mariadb:latest
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=UTC
      - MYSQL_ROOT_PASSWORD=changeme
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=myuser
      - MYSQL_PASSWORD=mypassword
    volumes:
      - "/path/to/containers/mariadb:/config"
    ports:
      - 3306:3306
    restart: unless-stopped

.env:

DIRECTOR_PROJECT=mariadb
PUID=1000
PGID=1000
TZ=UTC
MYSQL_ROOT_PASSWORD=changeme
MYSQL_DATABASE=mydb
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword

appjail-director.yml:

options:
  - virtualnet: ':<random> default'
  - nat:
services:
  mariadb:
    name: mariadb
    options:
      - container: 'boot args:--pull'
    oci:
      user: root
      environment:
        - PUID: !ENV '${PUID}'
        - PGID: !ENV '${PGID}'
        - TZ: !ENV '${TZ}'
        - MYSQL_ROOT_PASSWORD: !ENV '${MYSQL_ROOT_PASSWORD}'
        - MYSQL_DATABASE: !ENV '${MYSQL_DATABASE}'
        - MYSQL_USER: !ENV '${MYSQL_USER}'
        - MYSQL_PASSWORD: !ENV '${MYSQL_PASSWORD}'
    volumes:
      - MARIADB_CONFIG_PATH: /config
volumes:
  MARIADB_CONFIG_PATH:
    device: '/path/to/containers/mariadb'

Makejail:

ARG tag=latest

OPTION overwrite=force
OPTION from=ghcr.io/daemonless/mariadb:${tag}
podman run -d --name mariadb \
  -p 3306:3306 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=UTC \
  -e MYSQL_ROOT_PASSWORD=changeme \
  -e MYSQL_DATABASE=mydb \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=mypassword \
  -v /path/to/containers/mariadb:/config \
  ghcr.io/daemonless/mariadb:latest
- name: Deploy mariadb
  containers.podman.podman_container:
    name: mariadb
    image: ghcr.io/daemonless/mariadb:latest
    state: started
    restart_policy: always
    env:
      PUID: "1000"
      PGID: "1000"
      TZ: "UTC"
      MYSQL_ROOT_PASSWORD: "changeme"
      MYSQL_DATABASE: "mydb"
      MYSQL_USER: "myuser"
      MYSQL_PASSWORD: "mypassword"
    ports:
      - "3306:3306"
    volumes:
      - "/path/to/containers/mariadb:/config"

Access at: http://localhost:3306

Interactive Configuration

Parameters

Environment Variables

Variable Default Description
PUID 1000
PGID 1000
TZ Etc/UTC
MYSQL_ROOT_PASSWORD changeme Root password (required on first run)
MYSQL_DATABASE mydb Database to create on first run
MYSQL_USER myuser User to create on first run
MYSQL_PASSWORD mypassword Password for MYSQL_USER

Volumes

Path Description
/config MariaDB configuration and data

Ports

Port Protocol Description
3306 TCP MariaDB port

Implementation Details

  • Architectures: amd64
  • User: bsd (UID/GID set via PUID/PGID). Defaults to 1000:1000.
  • Base: Built on ghcr.io/daemonless/base (FreeBSD 15.0).

Need help? Join our Discord community.