Yukarıdaki paragraftan gördüğünüz üzere bu yazı bir dizinin parçası. İtiraf ediyorum; “bunu da yazmayayım ya gerek yok” dedim, ama böyle bir diziye giriştiysem eksik bırakmamam da gerekiyor. O yüzden veritabanı katmanımızın kurulumu için de kısa bir yazı yazalım.

Bu yazıda ortam değişkenlerini kullanarak ayarları da değiştirmemize olanak veren Bitnami kalıbını kullanarak Docker üzerinde MariaDB kurulumu gerçekleştireceğiz.

MariaDB Hikayesi

MariaDB MySql’den türemiş bir fork (çatal). Açık kaynak kodlu bir veritabanı olan MySql 2008 yılında Sun tarafından satın alınmıştı. MySql’in oluşturucusu Micheal Widenus bu satıştan 1 sene sonra Sun’dan ayrıldı. Oracle’ın Sun’ı satın alma girişimi ile beraber MySql Müşterilerine çağrıda bulunarak Avrupa komisyonuna baskı yapmaları için “MySql’i kurtarın” kapmanyası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 kafası atan Micheal Widenius abi açık kaynak kodlu MySql’i forklayarak MariaDB’yi oluşturdu ve açık kaynak kodlu MySql felsefesine ilerleterek devam ettirdi.

Açık kaynak kod felsefesi sayesinde Google, Facebook, Twitter vb. devlerin de gelişimine katkıda bulunduğu MariaDB bugün MySql’den çok daha performanslı ve güvenli bir veritabanı olarak ve en güzeli 100% MySql uyumluluğu ile devam ediyor.

İlgili Vikipedi makalesini (1) okurken öğrendiğim çok ilginç bir bilgiyi paylaşmak istiyorum. Micheal Widenius’un My, Maria ve Max adında üç kızı var ve kızlarının isimleri MaxDB, MySql ve MariaDB’nin isimlendirilmesinde esin kaynağı olmuş.

Docker ile MariaDB kurulumu

MariaDB’yi BitNami tarafından sağlanan kalıp ile kolayca kurabilirsiniz.

$ 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 konteyner’i ayağa kaldırabilirsiniz.

$ docker run --name mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER={kullanıcıadı} -e MARIADB_PASSWORD={kullanmakistediğinizşifre} bitnami/mariadb:latest

Özellikle üretim ortamı için ortam değişkenleri ile biraz daha 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.

version: '2'
 networks:
   app-tier:
     driver: bridge
 services:
   mariadb:
     image: 'bitnami/mariadb:latest'
     environment:
       - ALLOW_EMPTY_PASSWORD=yes
       - MARIADB_USER=kullaniciadi
       - MARIADB_PASSWORD=sifre
     networks:
       - mariadb-network

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

version: '2'
 services:
   mariadb-master:
     image: 'bitnami/mariadb:latest'
     ports:
       - '3306'
     volumes:
       - /path/to/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'
     ports:
       - '3306'
     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

Geliştirme ortamında replication yapmanız şart değil ama bitnami kalıbında birden fazla konteyner ayağa kaldırıp ortam değişkenlerini kullanarak replication yapmanız mümkün.

Bitnami kalıbı ‘Non-Root’ olarak tabir edilen ve root yetkileri ile çalışmayan bir kalıp. 1001 ID’li kullanıcı ile işlem yapıyor ve bu kullanıcının verilerin saklanacağı dizine okuma/yazma izni bulunması gerekiyor. Ben diğer konteynerlerimde 1000 ID’li kullanıcı üzerinden işlem yaptığım için standart olması açısından bu kullanıcı ID’sini 1000 olarak değiştirdim. Bunun için dockerbuild dosyasını düzenleyerek orijinal bitnami kalıbını extend etmeniz (genişletmeniz) gerekiyor.

FROM bitnami/mariadb
USER 1000

Bu şekilde bir dockerfile oluşturduktan sorna, docker-compose.yaml dosyanız içerisindeki image: 'bitnami/mariadb:latest' satırını kaldırarak yerine build: . satırı ile değiştirmeniz yeterli.

PHPMyAdmin

PhpMyAdmin için özel bir kurulum yapmanız veya konteyner kurmanıza gerek yok. Web sunucunuzda ilgili bir dizine (mümkünse dışarıdan erişilemeyecek bir dizin veya port altında) indirip, config.inc.php dosyasını ihtiyaçlarınıza göre düzenleyip kullanabilirsiniz.

Sorularınız varsa veya fikir alışverişi yapmak isterseniz yorumlardan, Twitter , LinkedIn veya Instagram üzerinden ulaşabilirsiniz. Sevgiler…

Referans:

  1. Wikipedia contributors. Michael Widenius. Wikipedia, The Free Encyclopedia. February 19, 2021, 11:40 UTC. Available at: https://en.wikipedia.org/w/index.php?title=Michael_Widenius&oldid=1007686272. Accessed February 28, 2021.
Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.