Docker ile MariaDB Kurulumu

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-networkkullanımı) ve kayan girintiler (indentation) giderilmiştir.- Modernizasyon: Docker Compose sürümü
'3.8'formatına güncellenmiş vedocker-composekomutlarıdocker composestandardı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çıklama | Varsayılan Değer |
|---|---|---|
ALLOW_EMPTY_PASSWORD | Parolasız bağlantıya izin verilsin mi? (yes / no). | no |
MARIADB_ROOT_PASSWORD | Root kullanıcısının parolası. | Boş |
MARIADB_USER | Oluşturulacak yeni standart veritabanı kullanıcısı. | Boş |
MARIADB_PASSWORD | Yeni standart kullanıcının parolası. | Boş |
MARIADB_DATABASE | Baş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:
- Wikipedia contributors. "Michael Widenius." Wikipedia, The Free Encyclopedia. Available at: https://en.wikipedia.org/wiki/Michael_Widenius
