Schweis Logosu
Schweis
Blog Yazılarına Dön
DevOps 2026-01-30

Yüksek Performanslı PHP Uygulamaları İçin Docker Konteynerleri Nasıl Optimize Edilir

Yüksek Performanslı PHP Uygulamaları İçin Docker Konteynerleri Nasıl Optimize Edilir

Doğru Yapılan Konteynerleştirme

Docker dağıtım süreçlerinde devrim yarattı, ancak yavaş bir uygulamayı bir konteyner içine sarmak size sadece yavaş bir konteyner verir. Schweis'ta biz `Dockerfile` dosyamızı kod tabanımızın kritik bir parçası olarak görüyoruz. PHP için Docker'ı optimize etmek sadece dosya boyutuyla ilgili değildir; çalışma zamanı verimliliği, güvenlik ve derleme hızıyla ilgilidir.

1. Temel İmaj Seçimi

Her zaman `alpine` ile başlıyoruz. `php:8.3-fpm-alpine` imajı bizim altın standartımızdır. Minimum saldırı yüzeyi sunar. Daha az kütüphane, daha az güvenlik açığı (CVE) demektir. Hangi kütüphaneleri kuracağımız konusunda bizi açık ve seçici olmaya zorlar, böylece üretim (production) ortamına gereksiz şişkinliklerin sızmasını engeller.

2. OpCache Ayarları

PHP yorumlanan bir dildir; yani betikleri her istekte tekrar derlemek boşa harcanan CPU döngüleridir. Konteyner konfigürasyonlarımızda OpCache'i agresif bir şekilde ayarlıyoruz:


opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

Bu konfigürasyon, uygulama kodumuzun bir kez derlenmesini ve bellekte kalmasını sağlar. Belge portalı veya blog gibi "okuma yoğunluklu" bir site için bu, yanıt sürelerini neredeyse statik dosya hızlarına düşürür.

3. Çok Aşamalı Derlemeler (Multi-Stage Builds)

Üretim imajlarımızı tertemiz tutmak için çok aşamalı derlemelere güveniyoruz. Derleme araçları, derleyiciler ve geliştirme bağımlılıkları bir `builder` aşamasında yaşar ve asla nihai imaja girmez. Ayrıca `Dockerfile` komutlarımızı dikkatlice sıralıyoruz. Kaynak kodundan önce çekirdek bağımlılık dosyalarını kopyalamak, Docker'ın katman önbelleğinin (layer cache) bir satır CSS değiştirdiğimizde tüm kütüphaneleri yeniden yüklemesini engeller.

Güvenlik Bağlamları

Konteynerleri asla `root` olarak çalıştırmıyoruz. Dockerfiles dosyalarımız açıkça `www-data` veya özel bir kullanıcıya geçer. Mümkün olan yerlerde salt okunur dosya sistemleri kullanıyoruz ve kesinlikle ihtiyaç duyulanlar dışındaki tüm yetkileri (capabilities) bırakıyoruz. Yüksek güvenlikli bir ortamda konteyner sınırı, son savunma hattıdır; biz onu bir kale yapıyoruz.

2026 İçin Docker ve PHP-FPM Optimizasyonu

Modern donanımlarda Docker performansı artık yerli (native) hıza çok yakındır. Ancak disk I/O işlemleri hala bir darboğaz olabilir. Schweis olarak, büyük veri setleri ile çalışan PHP uygulamalarımızda "volume mount" optimizasyonları ve "tmpfs" kullanarak giriş/çıkış gecikmelerini minimize ediyoruz. Bu, özellikle yüksek trafikli uygulamalarda %20-30 oranında performans artışı sağlar.

Schweis Team

Schweis Project

Collective Intelligence