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:
- 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.
MariaDB kurulu sunucuda MySQL destekleyen Docker kurmam geerekiyor. Docker MariaDB desteklemiyor. MariaDB varken eş zamanlı olarak docker ile MySQL8 kullanabilmem mümkün mü?
Docker ile MariaDB ve Mysql’i aynı anda kullanabilirsiniz, veya birini host makinaya kurup diğerini docker ile de çalıştırabilirsiniz, sadece portları farklı ayarlamanız gerekir.