Schweis Loqosu
Schweis
Bloq Yazılarına Qayıt
DevOps 2026-01-30

Yüksək Performanslı PHP Tətbiqləri üçün Docker Konteynerləri necə optimallaşdırılır

Yüksək Performanslı PHP Tətbiqləri üçün Docker Konteynerləri necə optimallaşdırılır

Düzgün Aparılan Konteynerləşdirmə

Docker tətbiqetmə proseslərində inqilab yaratdı, lakin yavaş bir tətbiqi konteyner daxilinə salmaq sizə yalnız yavaş bir konteyner verər. Schweis-də biz `Dockerfile` faylımızı kod bazamızın kritik bir hissəsi kimi görürük. PHP üçün Docker-ı optimallaşdırmaq yalnız fayl ölçüsü ilə bağlı deyil; iş zamanı səmərəliliyi, təhlükəsizlik və yığılma sürəti ilə bağlıdır.

1. Əsas İmaj Seçimi

Hər zaman `alpine` ilə başlayırıq. `php:8.3-fpm-alpine` imajı bizim qızıl standartımızdır. Minimum saldırı sahəsi təqdim edir. Daha az kitabxana, daha az təhlükəsizlik boşluğu (CVE) deməkdir. Hansı kitabxanaları quraşdıracağımız barədə bizi aydın və seçici olmağa məcbur edir, beləliklə istehsalat mühitinə lazımsız şişkinliklərin sızmasının qarşısını alır.

2. OpCache Parametrləri

PHP interpretasiya edilən bir dildir; yəni skriptləri hər sorğuda təkrar kompilyasiya etmək boşa xərclənən CPU dövrləridir. Konteyner konfiqurasiyalarımızda OpCache-i aqressiv şəkildə tənzimləyirik:


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 konfiqurasiya, tətbiq kodumuzun bir dəfə kompilyasiya edilməsini və yaddaşda qalmasını təmin edir. Bloq kimi "oxuma intensiv" bir sayt üçün bu, cavab müddətlərini demək olar ki, statik fayl sürətlərinə endirir.

3. Çoxmərhələli Yığımlar (Multi-Stage Builds)

İstehsalat imajlarımızı tərtəmiz saxlamaq üçün çoxmərhələli yığımlara etibar edirik. Yığım alətləri və inkişaf asılılıqları bir `builder` mərhələsində qalır və heç vaxt yekun imaja daxil olmur. Həmçinin `Dockerfile` əmrlərimizi diqqətlə sıralayırıq. Koddan əvvəl asılılıq fayllarını kopyalamaq, Docker-in qat kükünün (layer cache) hər dəfə kodu dəyişdikdə hər şeyi yenidən yükləməsinin qarşısını alır.

Təhlükəsizlik Kontekstləri

Konteynerləri heç vaxt `root` kimi işlətmirik. Dockerfiles fayllarımız açıq şəkildə `www-data` və ya xüsusi bir istifadəçiyə keçir. Mümkün olan yerlərdə yalnız oxuna bilən fayl sistemləri istifadə edirik və mütləq lazım olanlar xaricindəki bütün səlahiyyətləri ləğv edirik. Yüksək təhlükəsizlikli bir mühitdə konteyner sərhədi, son müdafiə xəttidir; biz onu bir qala edirik.

Schweis Team

Schweis Project

Collective Intelligence