Introducing our new CEO Don Johnson - Read More

bitnami/mariadb-galera

Verified Publisher

By VMware

Updated 3 days ago

Bitnami container image for MariaDB Galera

Image
Databases & Storage
26

10M+

Bitnami package for MariaDB Galera

What is MariaDB Galera?

MariaDB Galera is a multi-primary database cluster solution for synchronous replication and high availability.

Overview of MariaDB Galera Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.

TL;DR

docker run --name mariadb \
  -e ALLOW_EMPTY_PASSWORD=yes \
  bitnami/mariadb-galera:latest

Warning: These quick setups are only intended for development environments. You are encouraged to change the insecure default credentials and check out the available configuration options in the Configuration section for a more secure deployment.

Why use Bitnami Images?

  • Bitnami closely tracks upstream source changes and promptly publishes new versions of this image using our automated systems.
  • With Bitnami images the latest bug fixes and features are available as soon as possible.
  • Bitnami containers, virtual machines and cloud images use the same components and configuration approach - making it easy to switch between formats based on your project needs.
  • All our images are based on minideb -a minimalist Debian based container image that gives you a small base container image and the familiarity of a leading Linux distribution- or scratch -an explicitly empty image-.
  • All Bitnami images available in Docker Hub are signed with Notation. Check this post to know how to verify the integrity of the images.
  • Bitnami container images are released on a regular basis with the latest distribution packages available.

Looking to use MariaDB Galera in production? Try VMware Tanzu Application Catalog, the commercial edition of the Bitnami catalog.

How to deploy MariaDB Galera in Kubernetes?

Deploying Bitnami applications as Helm Charts is the easiest way to get started with our applications on Kubernetes. Read more about the installation in the Bitnami MariaDB Galera Chart GitHub repository.

Bitnami containers can be used with Kubeapps for deployment and management of Helm Charts in clusters.

Why use a non-root container?

Non-root container images add an extra layer of security and are generally recommended for production environments. However, because they run as a non-root user, privileged tasks are typically off-limits. Learn more about non-root containers in our docs.

Only latest stable branch maintained in the free Bitnami catalog

Starting December 10th 2024, only the latest stable branch of any container will receive updates in the free Bitnami catalog. To access up-to-date releases for all upstream-supported branches, consider upgrading to Bitnami Premium. Previous versions already released will not be deleted. They are still available to pull from DockerHub.

Please check the Bitnami Premium page in our partner Arrow Electronics for more information.

Supported tags and respective Dockerfile links

NOTE: Debian 9 and Oracle Linux 7 images have been deprecated in favor of Debian 10 images. Bitnami will not longer publish new Docker images based on Debian 9 or Oracle Linux 7.

Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags in our documentation page.

You can see the equivalence between the different tags by taking a look at the tags-info.yaml file present in the branch folder, i.e bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml.

Subscribe to project updates by watching the bitnami/containers GitHub repo.

Get this image

The recommended way to get the Bitnami MariaDB Galera Docker Image is to pull the prebuilt image from the Docker Hub Registry.

docker pull bitnami/mariadb-galera:latest

To use a specific version, you can pull a versioned tag. You can view the list of available versions in the Docker Hub Registry.

docker pull bitnami/mariadb-galera:[TAG]

If you wish, you can also build the image yourself by cloning the repository, changing to the directory containing the Dockerfile and executing the docker build command. Remember to replace the APP, VERSION and OPERATING-SYSTEM path placeholders in the example command below with the correct values.

git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .

Persisting your database

If you remove the container all your data will be lost, and the next time you run the image the database will be reinitialized. To avoid this loss of data, you should mount a volume that will persist even after the container is removed.

For persistence you should mount a directory at the /bitnami/mariadb path. If the mounted directory is empty, it will be initialized on the first run.

docker run \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -v /path/to/mariadb-persistence:/bitnami/mariadb \
    bitnami/mariadb-galera:latest

or by modifying the docker-compose.yml file present in this repository:

services:
  mariadb:
  ...
    volumes:
      - /path/to/mariadb-persistence:/bitnami/mariadb
  ...

Connecting to other containers

Using Docker container networking, a MariaDB server running inside a container can easily be accessed by your application containers.

Containers attached to the same network can communicate with each other using the container name as the hostname.

Using the Command Line

In this example, we will create a MariaDB client instance that will connect to the server instance that is running on the same docker network as the client.

Step 1: Create a network

docker network create app-tier --driver bridge

Step 2: Launch the MariaDB server instance

Use the --network app-tier argument to the docker run command to attach the MariaDB container to the app-tier network.

docker run -d --name mariadb-galera \
    -e ALLOW_EMPTY_PASSWORD=yes \
    --network app-tier \
    bitnami/mariadb-galera:latest

Step 3: Launch your MariaDB client instance

Finally we create a new container instance to launch the MariaDB client and connect to the server created in the previous step:

docker run -it --rm \
    --network app-tier \
    bitnami/mariadb-galera:latest mysql -h mariadb-galera -u root
Using a Docker Compose file

When not specified, Docker Compose automatically sets up a new network and attaches all deployed services to that network. However, we will explicitly define a new bridge network named app-tier. In this example we assume that you want to connect to the MariaDB server from your own custom application image which is identified in the following snippet by the service name myapp.

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  mariadb-galera:
    image: 'bitnami/mariadb-galera:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    networks:
      - app-tier
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - app-tier

IMPORTANT:

  1. Please update the YOUR_APPLICATION_IMAGE placeholder in the above snippet with your application image
  2. In your application container, use the hostname mariadb to connect to the MariaDB server

Launch the containers using:

docker-compose up -d

Configuration

Environment variables

Customizable environment variables

NameDescriptionDefault Value
ALLOW_EMPTY_PASSWORDAllow MariaDB Galera access without any password.no
MARIADB_AUTHENTICATION_PLUGINMariaDB Galera authentication plugin to configure during the first initialization.nil
MARIADB_ROOT_USERMariaDB Galera database root user.root
MARIADB_ROOT_PASSWORDMariaDB Galera database root user password.nil
MARIADB_USERMariaDB Galera database user to create during the first initialization.nil
MARIADB_PASSWORDPassword for the MariaDB Galera database user to create during the first initialization.nil
MARIADB_DATABASEMariaDB Galera database to create during the first initialization.nil
MARIADB_MASTER_HOSTAddress for the MariaDB Galera master node.nil
MARIADB_MASTER_PORT_NUMBERPort number for the MariaDB Galera master node.3306
MARIADB_MASTER_ROOT_USERMariaDB Galera database root user of the master host.root
MARIADB_MASTER_ROOT_PASSWORDPassword for the MariaDB Galera database root user of the the master host.nil
MARIADB_MASTER_DELAYMariaDB Galera database replication delay.0
MARIADB_REPLICATION_USERMariaDB Galera replication database user.nil
MARIADB_REPLICATION_PASSWORDPassword for the MariaDB Galera replication database user.nil
MARIADB_PORT_NUMBERPort number to use for the MariaDB Galera Server service.nil
MARIADB_REPLICATION_MODEMariaDB Galera replication mode.nil
MARIADB_REPLICATION_SLAVE_DUMPMake a dump on master and update slave MariaDB Galera databasefalse
MARIADB_EXTRA_FLAGSExtra flags to be passed to start the MariaDB Galera Server.nil
MARIADB_INIT_SLEEP_TIMESleep time when waiting for MariaDB Galera init configuration operations to finish.nil
MARIADB_CHARACTER_SETMariaDB Galera collation to use.nil
MARIADB_COLLATEMariaDB Galera collation to use.nil
MARIADB_BIND_ADDRESSMariaDB Galera bind address.nil
MARIADB_SQL_MODEMariaDB Galera Server SQL modes to enable.nil
MARIADB_UPGRADEMariaDB Galera upgrade option.AUTO
MARIADB_SKIP_TEST_DBWhether to skip creating the test database.no
MARIADB_CLIENT_ENABLE_SSLWhether to force SSL for connections to the MariaDB Galera database.no
MARIADB_CLIENT_SSL_CA_FILEPath to CA certificate to use for SSL connections to the MariaDB Galera database server.nil
MARIADB_CLIENT_SSL_CERT_FILEPath to client public key certificate to use for SSL connections to the MariaDB Galera database server.nil
MARIADB_CLIENT_SSL_KEY_FILEPath to client private key to use for SSL connections to the MariaDB Galera database server.nil
MARIADB_CLIENT_EXTRA_FLAGSWhether to force SSL connections with the "mysql" CLI tool. Useful for applications that rely on the CLI instead of APIs.no
MARIADB_STARTUP_WAIT_RETRIESNumber of retries waiting for the database to be running.300
MARIADB_STARTUP_WAIT_SLEEP_TIMESleep time between retries waiting for the database to be running.2
MARIADB_ENABLE_SLOW_QUERYWhether to enable slow query logs.0
MARIADB_LONG_QUERY_TIMEHow much time, in seconds, defines a slow query.10.0
MARIADB_GALERA_DEFAULT_NODE_NAMEDefault logical name that the node will use to refer to itself in the Galera cluster.nil
MARIADB_GALERA_DEFAULT_NODE_ADDRESSDefault node address to report to the Galera cluster.nil
MARIADB_GALERA_DEFAULT_MARIABACKUP_PASSWORDDefault password for the username to use with the "mariabackup" tool for State Snapshot Transfer (SST).nil
MARIADB_GALERA_CONF_DIRMariaDB Galera configuration directory/opt/bitnami/mariadb/conf
MARIADB_GALERA_MOUNTED_CONF_DIRDirectory for including custom configuration files (that override the default generated ones)/bitnami/conf
MARIADB_GALERA_FORCE_SAFETOBOOTSTRAPWhether bootstrapping should be performed even if the node is marked as not safe to bootstrap.nil
MARIADB_GALERA_CLUSTER_BOOTSTRAPWhether the node should be the one performing the bootstrap process of the Galera cluster.nil
MARIADB_GALERA_CLUSTER_ADDRESSGalera cluster address.nil
MARIADB_GALERA_CLUSTER_NAMEGalera cluster name.$DB_GALERA_DEFAULT_CLUSTER_NAME
MARIADB_GALERA_NODE_NAMELogical name that the node uses to refer to itself in the Galera cluster, defaults to the node hostname.nil
MARIADB_GALERA_NODE_ADDRESSNode address to report to the Galera cluster, defaults to the node IP address.nil
MARIADB_GALERA_SST_METHODState Snapshot Transfer (SST) method to use.$DB_GALERA_DEFAULT_SST_METHOD
MARIADB_GALERA_MARIABACKUP_USERUsername to use with the "mariabackup" tool for State Snapshot Transfer (SST).$DB_GALERA_DEFAULT_MARIABACKUP_USER
MARIADB_GALERA_MARIABACKUP_PASSWORDPassword for the username to use with the "mariabackup" tool for State Snapshot Transfer (SST).$DB_GALERA_DEFAULT_MARIABACKUP_PASSWORD
MARIADB_ENABLE_LDAPWhether to enable LDAP for MariaDB Galera.no
MARIADB_ENABLE_TLSWhether to enable SSL/TLS for MariaDB Galera.no
MARIADB_TLS_CERT_FILEPath to the MariaDB Galera SSL/TLS certificate file.nil
MARIADB_TLS_KEY_FILEPath to the MariaDB Galera SSL/TLS certificate key file.nil
MARIADB_TLS_CA_FILEPath to the MariaDB Galera SSL/TLS certificate authority CA file.nil
MARIADB_REPLICATION_USERMariaDB Galera replication database user.monitor
MARIADB_REPLICATION_PASSWORDPassword for the MariaDB Galera replication database user.monitor

Read-only environment variables

NameDescriptionValue
DB_FLAVORSQL database flavor. Valid values: mariadb or mysql.mariadb
DB_BASE_DIRBase path for MariaDB Galera files.${BITNAMI_ROOT_DIR}/mariadb
DB_VOLUME_DIRMariaDB Galera directory for persisted files.${BITNAMI_VOLUME_DIR}/mariadb
DB_DATA_DIRMariaDB Galera directory for data files.${DB_VOLUME_DIR}/data
DB_BIN_DIRMariaDB Galera directory where executable binary files are located.${DB_BASE_DIR}/bin
DB_SBIN_DIRMariaDB Galera directory where service binary files are located.${DB_BASE_DIR}/sbin
DB_CONF_DIRMariaDB Galera configuration directory.${DB_BASE_DIR}/conf
DB_DEFAULT_CONF_DIRMariaDB Galera default configuration directory.${DB_BASE_DIR}/conf.default
DB_LOGS_DIRMariaDB Galera logs directory.${DB_BASE_DIR}/logs
DB_TMP_DIRMariaDB Galera directory for temporary files.${DB_BASE_DIR}/tmp
DB_CONF_FILEMain MariaDB Galera configuration file.${DB_CONF_DIR}/my.cnf
DB_PID_FILEMariaDB Galera PID file.${DB_TMP_DIR}/mysqld.pid
DB_SOCKET_FILEMariaDB Galera Server socket file.${DB_TMP_DIR}/mysql.sock
DB_DAEMON_USERUsers that will execute the MariaDB Galera Server process.mysql
DB_DAEMON_GROUPGroup that will execute the MariaDB Galera Server process.mysql
MARIADB_DEFAULT_PORT_NUMBERDefault port number to use for the MariaDB Galera Server service.3306
MARIADB_DEFAULT_CHARACTER_SETDefault MariaDB Galera character set.

Note: the README for this container is longer than the DockerHub length limit of 25000, so it has been trimmed. The full README can be found at https://github.com/bitnami/containers/blob/main/bitnami/mariadb-galera/README.md

Docker Pull Command

docker pull bitnami/mariadb-galera
Bitnami