Docker, modern yazılım geliştirme süreçlerinde container teknolojisiyle uygulama dağıtımını devrimleştirmiştir.
Docker, modern yazılım geliştirme süreçlerinde container teknolojisiyle uygulama dağıtımını devrimleştirmiştir. Özellikle dinamik web uygulamaları gibi WordPress siteleri için, veritabanı katmanını (MySQL) ayrı container’larda çalıştırmak, ortam izolasyonu sağlar, bağımlılık çatışmalarını önler ve ölçeklenebilirlik kazandırır. Bu rehberde, Docker Compose kullanarak WordPress ve MySQL container’larını birbirine bağlayarak tam bir stack oluşturmayı adım adım inceleyeceğiz. Bu yaklaşım, geliştirme ortamından üretim sunucusuna kadar tutarlılık sağlar ve manuel kurulum zahmetini ortadan kaldırır.
Docker tabanlı bir WordPress + MySQL kurulumu için öncelikle sisteminize Docker ve Docker Compose’un doğru şekilde yüklenmesi şarttır. Bu araçlar, container’ların oluşturulmasını, yönetilmesini ve orkestrasyonunu kolaylaştırır. Linux tabanlı sistemlerde (örneğin Ubuntu), resmi Docker depolarından kurulum yaparak en güncel sürümlere erişebilirsiniz. Kurulum sonrası, Docker servisini başlatın ve mevcut kullanıcıyı docker grubuna ekleyerek sudo gereksinimini ortadan kaldırın. Bu adımlar, sorunsuz bir çalışma ortamı için temel oluşturur.
Ayrıca, proje için ayrı bir dizin oluşturun ve gerekli dosya izinlerini ayarlayın. Volumes ile kalıcı veri depolama alanları tanımlayarak veritabanı verilerinin kaybolmasını önleyin. Örnek proje yapısı şu şekilde olabilir: bir kök dizinde docker-compose.yml dosyası, WordPress için wp-content klasörü ve MySQL için veri volume’u. Bu hazırlık aşaması, sonraki bağlantı işlemlerini hızlandırır ve hataları minimize eder. Toplamda, bu bölüm yaklaşık 10-15 dakika sürer ve sistem kaynaklarını optimize eder.
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.shsudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-composemkdir wordpress-docker && cd wordpress-dockerdocker-compose.yml dosyasında WordPress servisini tanımlarken, resmi WordPress imajını (wordpress:php8.1-apache gibi) kullanın. Bu servis, MySQL veritabanına bağlanmak için environment değişkenlerini (WORDPRESS_DB_HOST, WORDPRESS_DB_NAME vb.) içermelidir. Ports bölümünde 8080:80 eşleştirmesi yaparak container’ı ana makineye açın. Volumes ile wp-content dizinini bağlayarak tema ve eklenti değişikliklerini kalıcı hale getirin. Bu yapılandırma, WordPress’in otomatik veritabanı bağlantısını sağlar ve manuel wp-config.php düzenlemesini gereksiz kılar.
MySQL servisi için mysql:8.0 imajını seçin ve root şifresi, veritabanı adı gibi environment değişkenlerini belirleyin (MYSQL_ROOT_PASSWORD, MYSQL_DATABASE). WORDPRESS_DB_HOST olarak ‘db’ alias’ını kullanın ki Docker’ın dahili DNS’i otomatik çözümlesin. Volumes ile /var/lib/mysql yolunu haritalayın. Networks bölümünde ortak bir ağ tanımlayarak servisler arası iletişimi güvence altına alın. Bu ayarlar, bağlantı gecikmelerini önler ve yüksek performanslı bir stack oluşturur. Örnek YAML snippet’i şu şekildedir:
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress:php8.1-apache
volumes:
- ./wp-content:/var/www/html/wp-content
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: example
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
Bu dosya, iki container’ı kusursuz entegre eder ve yeniden başlatmalarda verileri korur.
Kurulum tamamlandıktan sonra, docker-compose up -d komutuyla servisleri arka planda başlatın. Logları docker-compose logs ile izleyin ki olası bağlantı hatalarını (örneğin şifre uyuşmazlığı) erken tespit edin. Tarayıcıda localhost:8080 adresine giderek WordPress kurulum sihirbazını çalıştırın; veritabanı bağlantısı otomatik gerçekleşecektir. Bu aşamada, MySQL’e docker-compose exec db mysql -u root -p ile bağlanıp veritabanını sorgulayın.
Bağlantıyı doğrulamak için WordPress admin panelinden veritabanı durumunu kontrol edin veya phpMyAdmin gibi bir araç ekleyin (ek servis olarak). Performansı artırmak adına, MySQL’e max_connections ve innodb_buffer_pool_size gibi parametreleri my.cnf ile ayarlayın. Güvenlik için, production’da environment değişkenlerini .env dosyasına taşıyın ve exposed portları firewall ile kısıtlayın. Bu adımlar, stack’in güvenilirliğini artırır ve günlük trafiğe hazır hale getirir.
Sorun giderme ipuçları: Container yeniden başlatma (docker-compose restart), volume temizleme veya imaj güncelleme. Bu işlemlerle, geliştiriciler hızlı iterasyon yapabilir.
Sonuç olarak, Docker Compose ile WordPress ve MySQL bağlantısı, standartlaştırılmış, taşınabilir ve verimli bir çözüm sunar. Bu yöntemle, birden fazla ortamda (geliştirme, test, üretim) aynı konfigürasyonu kullanabilir, deployment süresini dakikalara indirebilirsiniz. Pratiğe dökerek kendi projelerinizi güçlendirin ve container orkestrasyonunun gücünden faydalanın.