Docker ile MariaDB kurulumu

Bu yazıda Docker üzerinde MariaDB (Mysql alternatifi) kurulumu adım adım anlatacağım.


Docker ile MariaDB kurulumu

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.

Bir soru, öneri ya da yorumunuz mu var?

Evren Bal

Ben Evren BAL

1996'dan beri ‘Internet canlısıyım!’

Evren Bal Hakkında daha fazla bilgi.

Tanışmak isterseniz hemen sosyal medyadan iletişime geçebilirsiniz.

Bana Ulaşın

Bana Ulaşın

  • Bir sorunuz mu var?
  • Yazıda bir hata mı farkettiniz?
  • Sayfa ile ilgili bir öneriniz mi var?
  • Yazmamı önereceğiniz bir konu mu var?

Lütfen iletişim formunu kullanarak veya sosyal medya hesaplarımdan bana ulaşın.

Digital Ocean Logo

VPS sunucusu denemek ister misiniz?

Digital Ocean'a referans bağlantımdan kayıt olarak yeni oluşturacağınız hesabınızı 60 gün geçerli 100$ kredi ile açabilirsiniz. Bu miktar yüksek performanslı VPS'leri bile denemeniz için yeterlidir.

Yapacağınız onca kurulumun boşa gitmemesi için benim tavsiyem uzun vadede kullanabileceğiniz özellik ve maliyetlerde bir sunucu oluşturmanızdır.

Ücretsiz 100$ kredi bağlantısı

60 günlük denemeniz sonunda eğer devam etmek istemezseniz hiç bir ücret ödemeyeceksiniz. Hizmeti kullanmaya devam etmek isterseniz harcamanız 25$'a ulaştığında benim hesabıma da 25$ kredi yüklenecektir.

Diğer bir deyişle, siz 100$ ücretsiz krediyi her halükarda kazanırken, daha sonra ücretli devam etmeye karar verirseniz ben de 25$ kredi kazanacağım.

Copyright © 2022 - Evren BAL