Teknik Detaylar

Docker ile MariaDB Kurulumu

← Teknik Detaylar
2021-03-01 ~ 2026-06-21 · 3 dk okuma
Docker ile MariaDB Kurulumu
Bu yazıyı yapay zekâ ile tartış
Sayfayı kopyala

💡 Özet (TL;DR):

  • Amaç: Bitnami kalıbını kullanarak Docker üzerinde tekil (standalone) veya replikasyonlu (master-slave) MariaDB veritabanı sunucusu kurulumu.
  • Kritik Düzeltmeler: İlk YAML örneğindeki tanımsız ağ (network) hatası (tanımlı olmayan mariadb-network kullanımı) ve kayan girintiler (indentation) giderilmiştir.
  • Modernizasyon: Docker Compose sürümü '3.8' formatına güncellenmiş ve docker-compose komutları docker compose standardına çekilmiştir.

Yukarıdaki paragraftan gördüğünüz üzere bu yazı bir yazı dizisinin parçasıdır. İtiraf edeyim; başlangıçta "bunu da yazmayayım ya gerek yok" demiştim, ama böyle bir rehber serisine giriştiysem eksik bırakmamam gerekiyordu. O yüzden veritabanı katmanımızın kurulumu için de kısa bir rehber hazırladım.

Bu yazıda; ortam değişkenlerini kullanarak ayarları kolayca değiştirmemize olanak tanıyan Bitnami kalıbını (image) kullanarak Docker üzerinde MariaDB kurulumunu gerçekleştireceğiz.


Bitnami MariaDB Önemli Ortam Değişkenleri

Değişken AdıAçıklamaVarsayılan Değer
ALLOW_EMPTY_PASSWORDParolasız bağlantıya izin verilsin mi? (yes / no).no
MARIADB_ROOT_PASSWORDRoot kullanıcısının parolası.Boş
MARIADB_USEROluşturulacak yeni standart veritabanı kullanıcısı.Boş
MARIADB_PASSWORDYeni standart kullanıcının parolası.Boş
MARIADB_DATABASEBaşlangıçta otomatik oluşturulacak veritabanı adı.Boş

MariaDB Hikayesi

MariaDB, MySQL'den türemiş bir fork (çatal) projesidir. Açık kaynak kodlu bir veritabanı olan MySQL, 2008 yılında Sun Microsystems tarafından satın alınmıştı. MySQL'in yaratıcısı Michael Widenius bu satıştan 1 sene sonra Sun'dan ayrıldı.

Oracle'ın Sun'ı satın alma girişimiyle beraber Widenius, MySQL müşterilerine çağrıda bulunarak Avrupa Komisyonu'na baskı yapmaları amacıyla "MySQL'i Kurtarın" kampanyasını başlattı. Fakat Sun Microsystems, 2010 yılında Oracle tarafından satın alınarak MySQL'i de bünyesine katmış oldu.

Sun'dan ayrıldıktan sonra bu duruma tepki gösteren Michael Widenius, açık kaynak kodlu MySQL'i forklayarak MariaDB'yi oluşturdu ve açık kaynak kodlu MySQL felsefesini geliştirerek yoluna devam etti.

Açık kaynak kod felsefesi sayesinde Google, Facebook, Twitter gibi devlerin de gelişimine katkıda bulunduğu MariaDB; bugün MySQL'den çok daha performanslı, güvenli ve en güzeli %100 MySQL uyumluluğu ile yayın hayatını sürdürüyor.

İlgili Vikipedi makalesini okurken öğrendiğim çok ilginç bir bilgiyi de paylaşmak istiyorum: Michael Widenius'un My, Maria ve Max adında üç çocuğu var. Bu isimler MaxDB, MySQL ve MariaDB projelerinin isimlendirilmesinde esin kaynağı olmuştur.


Docker ile MariaDB Kurulumu

MariaDB'yi Bitnami tarafından sağlanan kalıp ile kolayca ayağa kaldırabilirsiniz.

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

Yerel geliştirme ortamında yukarıdaki komutla hızlıca bir MariaDB konteynerini ayağa kaldırabilirsiniz.

docker run --name mariadb \
  -e ALLOW_EMPTY_PASSWORD=yes \
  -e MARIADB_USER=kullaniciadi \
  -e MARIADB_PASSWORD=kullanmakistdiginizsifre \
  bitnami/mariadb:latest

Özellikle üretim (production) ortamı için ortam değişkenleri ile detaylı ayar yapmanız, en azından şifreyle girişi zorunlu kılmanız tavsiye edilir. Kullanıcı adı belirtilmezse varsayılan ana kullanıcı "root" olacaktır.

1. docker-compose.yml ile Kurulum (Tekil)

İsterseniz aşağıdaki gibi bir YAML dosyası oluşturarak docker compose up -d komutu ile ayağa kaldırmayı da tercih edebilirsiniz:

version: '3.8'

services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    restart: always
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=kullaniciadi
      - MARIADB_PASSWORD=sifre
    networks:
      - app-tier

networks:
  app-tier:
    driver: bridge

2. docker-compose.yml ile Master-Slave Replikasyon Kurulumu

Geliştirme ortamında replikasyon yapmanız şart değildir; ancak Bitnami kalıbında birden fazla konteyner ayağa kaldırıp ortam değişkenlerini kullanarak master-slave replikasyonunu kolayca yapılandırabilirsiniz:

version: '3.8'

services:
  mariadb-master:
    image: 'bitnami/mariadb:latest'
    restart: always
    ports:
      - '3306:3306'
    volumes:
      - ./mariadb-persistence:/bitnami/mariadb
    environment:
      - MARIADB_REPLICATION_MODE=master
      - MARIADB_REPLICATION_USER=repl_user
      - MARIADB_REPLICATION_PASSWORD=repl_password
      - MARIADB_ROOT_PASSWORD=master_root_password
      - MARIADB_USER=my_user
      - MARIADB_PASSWORD=my_password
      - MARIADB_DATABASE=my_database

  mariadb-slave:
    image: 'bitnami/mariadb:latest'
    restart: always
    depends_on:
      - mariadb-master
    environment:
      - MARIADB_REPLICATION_MODE=slave
      - MARIADB_REPLICATION_USER=repl_user
      - MARIADB_REPLICATION_PASSWORD=repl_password
      - MARIADB_MASTER_HOST=mariadb-master
      - MARIADB_MASTER_PORT_NUMBER=3306
      - MARIADB_MASTER_ROOT_PASSWORD=master_root_password

Bitnami kalıbı, "Non-Root" olarak tabir edilen ve root yetkileriyle çalışmayan bir kalıptır. Güvenlik gereği 1001 ID'li kullanıcı ile işlem yapar ve bu kullanıcının verilerin saklanacağı yerel dizinde yazma izinlerinin bulunması gerekir.

Eğer diğer konteynerlerinizde 1000 ID'li standart kullanıcı üzerinden işlem yapıyorsanız, tutarlılık açısından bu kullanıcı ID'sini 1000 olarak değiştirebilirsiniz. Bunun için bir Dockerfile hazırlayarak orijinal Bitnami kalıbını genişletmeniz (extend) gerekir:

FROM bitnami/mariadb:latest
USER 1000

Bu şekilde bir Dockerfile oluşturduktan sonra, docker-compose.yml dosyanız içerisindeki image: 'bitnami/mariadb:latest' satırını kaldırarak yerine build: . satırını eklemeniz yeterlidir.


phpMyAdmin Kurulumu

Veritabanı yönetimi için phpMyAdmin'i Docker Compose dosyanıza ayrı bir servis olarak ekleyebileceğiniz gibi, web sunucunuzda dışarıdan erişilemeyecek güvenli bir porta indirip config.inc.php dosyasını yapılandırarak da doğrudan kullanabilirsiniz.


Referans:

  1. Wikipedia contributors. "Michael Widenius." Wikipedia, The Free Encyclopedia. Available at: https://en.wikipedia.org/wiki/Michael_Widenius