Deploy PHP-FPM di Docker dengan Mudah & Cepat
Jika kamu ingin menjalankan aplikasi PHP secara efisien dan terisolasi, menggunakan PHP-FPM di Docker sangat direkomendasikan. PHP-FPM (FastCGI Process Manager) dirancang untuk menangani permintaan PHP, dengan cara yang lebih cepat dan scalable dibandingkan handler tradisional. Ketika dijalankan di dalam container Docker, kamu mendapatkan lingkungan yang konsisten, portable, dan bebas dari ketergantungan konfigurasi sistem host.
Dengan arsitektur berbasis container, kamu bisa memisahkan service PHP-FPM dari web server seperti Nginx sehingga lebih mudah melakukan scaling, debugging, maupun deployment ke berbagai environment (dev, staging, production) tanpa perubahan besar.
Kalau kamu sedang membangun aplikasi PHP modern, atau ingin menjaga workflow tetap bersih dan modular, ini adalah saat yang tepat untuk mulai memanfaatkan Docker dalam pengelolaan PHP-FPM. Yuk, langsung aja kita mulai!
Persiapan Awalย
Sebelum mulai, ada beberapa hal yang perlu disiapkan. Pertama, pastikan Docker udah terinstall di server kamu. Kalau belum, bisa langsung download dari official website Docker dan ikuti step by stepย instalasinya. Setelah itu, siapkan project PHP yang mau dipakai, bisa aplikasi yang udah ada atau bikin project baru.ย
Yang penting, di dalam folder project kamu harus ada file seperti index.php atau file PHP lainnya, plus composer.json kalau aplikasi kamu pakai Composer untuk dependency. Jangan lupa, tentuin versi PHP yang ingin dipakai, agar Dockerfile sesuai dengan kebutuhan. Setelah itu, DomaiNesians siap untuk buat Dockerfile dan konfigurasi PHP-FPM.
Dockerfile untuk PHP-FPM
Nah, sekarang kita bikin Dockerfile buat PHP-FPM. Dockerfile ini akan set up PHP-FPM di container sesuai kebutuhan. Contoh Dockerfile kira-kira akan seperti ini:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Pakai base image PHP dengan PHP-FPM FROM php:8.2-fpm # Install dependency tambahan, misalnya nginx dan composer RUN apt-get update && apt-get install -y \ ย ย ย ย nginx \ ย ย ย ย git \ ย ย ย ย unzip \ ย ย ย ย rm -rf /var/lib/apt/lists/* # Install Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # Copy file aplikasi ke dalam container COPY . /var/www/html # Set permission buat folder aplikasi RUN chown -R www-data:www-data /var/www/html # Expose port yang bakal dipakai EXPOSE 9000 ># Jalankan PHP-FPM CMD ["php-fpm"] |
Penjelasannya:
- FROM php:8.2-fpm: Pakai image PHP-FPM versi 8.2.
- RUN: Install nginx, Composer, dan dependency lain yang mungkin dibutuhkan.
- COPY: Copy semua file aplikasi ke dalam container.
- EXPOSE: Buka port 9000 buat PHP-FPM.
- CMD: Jalankan PHP-FPM pas container start.
Sekarang saatnya untuk build image dan jalankan container-nya
|
1 2 |
docker build -t php-fpm-app . docker run -d -p 9000:9000 --name php-fpm-container php-fpm-app |
Konfigurasi PHP-FPM di Docker
Setelah Docker container PHP-FPM berhasil, perlu tambahan konfigurasi untuk PHP-FPM sesuai kebutuhan. Konfigurasi PHP-FPM di Docker bisa disetup lewat file php.ini atau konfigurasi lain yang ada di folder container. Yuk, kita lihat langkah-langkah sederhananya:
1. Kustomisasi php.ini
Kalau kamu butuh mengubah pengaturan PHP (kayak upload_max_filesize, memory_limit, dll), kamu bisa membuat file php.ini sendiri dan copy ke container. Contoh file php.ini:
|
1 2 3 |
upload_max_filesize = 128M post_max_size = 128M memory_limit = 256M |
Setelah membuat file php.ini, copy ke container dengan cara ini di Dockerfile:
COPY php.ini /usr/local/etc/php/
Dengan cara ini, file php.ini akan digunakan sebagai pengaturan PHP di dalam container.
2. Konfigurasi Pool PHP-FPM
PHP-FPM punya file konfigurasi pool yang terletak di /usr/local/etc/php-fpm.d/. Kamu bisa edit file www.conf untuk setting seperti jumlah worker, timeout, dan lain-lain. Kalau mau custom lewat Docker, kamu bisa copy konfigurasi dari host ke container pakai perintah ini:
|
1 |
COPY ./php-fpm.d/www.conf /usr/local/etc/php-fpm.d/www.conf |
Atau, jika kamu tidak mau repot mengeditfile secara manual, bisa juga langsung set konfigurasi dari command line saat menjalankan container.
3. Mengatur Log
untuk debugging, kamu mungkin perlu menyalakan log PHP-FPM di Docker agar bisa melihat error. Cukup tambahkan konfigurasi ini di php.ini:
|
1 2 |
log_errors = On error_log = /var/log/php_errors.log |
Lalu, buat folder log di container dan pastikan PHP-FPM punya write access ke sana.
4. Restart Container Setelah Perubahan
Setelah konfigurasi selesai, kamu perlu restart container agar perubahan diterapkan:
|
1 |
docker restart php-fpm-container |
Dengan konfigurasi seperti ini, PHP-FPM akan running sesuai keinginan. Mudah kan? Jika ada pengaturan lain yang perlu diubah, tinggal edit file konfigurasi, copy ke container, dan restart.
Tips dan Trik Mengoptimalkan PHP-FPM di Docker
Supaya PHP-FPM berjalan lebih cepat dan efisien, ada beberapa tips dan trik yang bisa dicoba. Ini akan membantu aplikasi berjalan lebih lancar, apalagi jika ada lonjakan traffic.
1. Gunakan OpCache
PHP-FPM bisa jauh lebih cepat jika mengaktifkan OpCache. OpCache adalah ekstensi PHP yang berfungsi untuk melakukan caching bytecode hasil kompilasi PHP. Dengan OpCache aktif, PHP tidak perlu mengkompilasi ulang script pada setiap request, sehingga meningkatkan performa aplikasi secara signifikan. Untuk mengaktifkan OpCache, kamu cukup menambahkan atau mengubah konfigurasi berikut di file php.ini:
|
1 2 3 4 |
opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 |
2. Sesuaikan Jumlah PHP-FPM Workers
Jumlah workers di PHP-FPM sangat mempengaruhi performa, apalagi kalau aplikasi kamu butuh handle banyak request. Cek di file www.conf, lalu sesuaikan setting pm.max_children, pm.start_servers, dan pm.min_spare_servers supaya pas dengan kebutuhan. Misalnya:
|
1 2 3 |
pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 |
3. Optimalkan Timeout dan Limits
Kadang aplikasi PHP butuh waktu lebih lama untuk merespon. Atur max_execution_time dan max_input_time yang lebih tinggi di php.ini biar PHP tidak ke-cutout:
|
1 2 |
max_execution_time = 256 max_input_time = 256 |
Jangan lupa juga set memory_limit yang cukup, agar PHP tidak kehabisan memori.
4. Gunakan FPM Pool untuk Setiap Aplikasi
Kalau kamu punya beberapa aplikasi PHP di dalam satu container, lebih baik buat FPM pool terpisah untuk setiap aplikasi. Ini menjaga setiap aplikasi punya resource yang cukup dan tidak saling mengganggu.
5. Tidak Perlu Jalankan Semua Ekstensi PHP
Jangan install ekstensi PHP yang tidak perlu. Kalau aplikasi kamu tidak butuh gd atau mbstring, tidak usah diinstall. Itu bisa mengurangi beban server dan mempercepat waktu load.
6. Monitor PHP-FPM dengan Status Page
Pakai fitur status PHP-FPM di Docker buat cek performa secara real-time. Bisa kamu aktifkan di www.conf:
|
1 |
pm.status_path = /status |
Ini akan memberi akses ke page statistik, seperti jumlah request yang diterima, berapa banyak workers yang aktif, dan banyak lagi.
Kesimpulan
Secara keseluruhan, optimasi PHP-FPM di Docker bisa membuat aplikasi PHP kamu jalan lebih cepat dan efisien. Dengan setting yang tepat, seperti mengaktifkan OpCache, mengatur jumlah workers, dan memonitor performa, DomaiNesians bisa pastikan server PHP-FPM tetap lancar meski di tengah traffic yang padat. Jangan lupa juga buat pakai trik optimasi agar server tidak overload.
Kalau kamu mau performa yang lebih stabil dan kontrol lebih atas aplikasi, hosting PHP-FPM di Cloud VPS bisa jadi pilihan yang oke banget. Dengan VPS, kamu bisa atur spesifikasi sesuai kebutuhan dan bebas ngatur konfigurasi server. Pilih VPS yang punya uptime stabil dan performa handal, agar aplikasi PHP kamu selalu optimal tanpa gangguan.

