Docker, modern yazılım geliştirme akışının vazgeçilmez parçası. Bu rehberde WordPress için tam fonksiyonel bir Docker Compose ortamı kuracağız: MySQL, WordPress ve WP-CLI ile.
Neden Docker?
Geleneksel kurulumun sorunları:
- “Bende çalışıyor ama serverda çalışmıyor” sendromu
- PHP versiyonu, MySQL versiyonu çakışmaları
- Her yeni projede saatlerce kurulum
- Sistem üzerinde kalıcı bağımlılıklar
Docker ile her şey izole, taşınabilir ve tekrarlanabilir.
Adım 1: docker-compose.yml
Proje klasörünüzde aşağıdaki dosyayı oluşturun:
services:
db:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wpblog
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db_data:/var/lib/mysql
ports:
- "3307:3306"
wordpress:
image: wordpress:latest
restart: unless-stopped
depends_on:
- db
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wpblog
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
volumes:
- wp_data:/var/www/html
wpcli:
image: wordpress:cli
depends_on:
- wordpress
- db
volumes:
- wp_data:/var/www/html
user: "33:33"
entrypoint: ["wp", "--allow-root"]
profiles:
- cli
volumes:
db_data:
wp_data:
Adım 2: Çalıştırma
# Servisleri ayağa kaldır
docker compose up -d
# Logları izle
docker compose logs -f wordpress
# Servislerin durumu
docker compose ps
Birkaç saniye sonra https://wp-blog.kayapater.com adresinden WordPress kurulum sayfasına erişebilirsiniz.
Adım 3: WP-CLI ile Otomasyon
Manuel kurulum yerine WP-CLI ile her şeyi otomatikleştirelim:
# WordPress kurulumu
docker compose run --rm wpcli core install
--url="https://wp-blog.kayapater.com"
--title="Blog Adı"
--admin_user=admin
--admin_password=admin123
--admin_email=admin@example.com
--locale=tr_TR
# Tema kurulumu
docker compose run --rm wpcli theme install astra --activate
# Eklenti toplu kurulumu
docker compose run --rm wpcli plugin install
wordpress-seo contact-form-7 wp-super-cache
--activate
Adım 4: Volume Yönetimi
Verileriniz Docker volume’larında güvenle saklanır. Yedek almak ister misiniz?
# DB yedeği
docker compose exec db mysqldump -u wpuser -pwppass wpblog > backup.sql
# Volume'ları görüntüle
docker volume ls
# Tüm sistemi temizle (DİKKAT: veri silinir)
docker compose down -v
İpuçları
- Port çakışması? 3306 yerine 3307 kullandık (yerel MySQL ile çakışmasın diye)
- Hız: Volume’lara bind mount yerine named volume kullanmak Windows’ta çok daha hızlıdır
- Otomatik kurulum: WordPress’in env değişkenleri ile
wp-config.phpotomatik oluşur
Sonuç
Artık her yeni WordPress projesi için saniyeler içinde temiz bir ortam ayağa kaldırabilirsiniz. Üretim ortamı? Aynı docker-compose.yml ile (production override’ları eklenerek) deploy edilebilir.