Terlambat ke parti, baru sekarang merasa kuasa - Docker + PHP

244432425_393604658876016_5841360520876020136_n.jpg

Selasa, 5 Oktober 2021, 12:50 pm195

Dalam 10 tahun lalu, web developer yang menggunakan , akan install XAMPP untuk setup development server kat komputer sendiri (localhost). XAMPP adalah software bundle yang menggabungkan Apache webserver, PHP, MySQL & phpMyAdmin dalam satu pakej, dan user tak perlu configure satu persatu server & software, semua dah setup sekali.

Sebelum adanya XAMPP (atau MAMP, LAMP dsb), developer kena install satu persatu webserver, PHP & MySQL, kemudian configure mod, library, extension atau plugin yang diperlukan supaya kesemuanya dapat berfungsi sama. Seingat saya, pernah juga cuba configure sendiri ketiga² software ni waktu cuti semester UTP, time masih kat Gedong dulu (2006).

Kaedah ini dapat berfungsi dengan ok, sehinggalah wujud keperluan untuk bekerjasama dengan developer yang menggunakan operating system (OS) berlainan – Windows, MacOS & Linux, ataupun bila nak deploy website ke server yang guna OS berlainan. Setiap OS kena ada cara configure server dengan cara tertentu, dan ada masanya, website yang dibina berfungsi kat komputer developer, tapi tidak pada server, atau komputer developer lain (dengan tanggapan mereka guna browser yang sama).

Oleh itu, penyelesaian untuk masalah server settings ini adalah dengan menggunakan virtual machine. Kalau server guna Linux, developer akan install Linux dalam software virtual machine seperti Virtualbox atau VMWare. Dalam virtual machine tu boleh install webserver, PHP & MySQL yang guna version sama & settings yang sama dengan server.

Guna virtual machine ni pula ada masalah tersendiri. Ia memberatkan komputer developer, sebab kena run satu OS lain serentak dengan OS komputer. Nak start virtual machine tu pun dah ambil masa agak lama, sama macam nak run emulator Android.

Sekarang teknologi dah makin maju, cara untuk setup development server pun dah lain, dengan menggunakan . Konsep Docker lebih kurang macam virtual machine, cuma tak perlu run keseluruhan OS lain dalam komputer, hanya guna beberapa software & utility penting untuk tiru (emulate) OS yang digunakan pada server. Software & utility ini membentuk satu persekitaran (environment) yang dipanggil container.

Ini rupanya maksud container technology yang selalu terlintas kat timeline Twitter tu, tapi belum pernah cuba lagi. Sekarang dah pernah cuba, terus tak nak guna XAMPP lagi, dah merasa kuasa container 😆.

Mulanya saya mencari cara paling mudah & efektif untuk install web development yang boleh run PHP 7 dan PHP 8 dalam satu komputer. Saya pun terjumpa tutorial tentang kaedah terkini untuk setup PHP development environment ⁽¹⁾. Selepas ikut tutorial ni, nampak sangat mudah untuk buat, hanya guna configuration file, kemudian run command docker-compose untuk Docker setup keseluruhan environment.

Yang bagusnya, configuration file ini boleh juga di-setup kat server, jadi environment yang ada dalam komputer developer boleh di-setup sama dengan environment kat server. Masalah perbezaan settings atau version server & masalah virtual machine yang berat tu dah dapat diselesaikan dengan hanya menggunakan Docker.

Config file Docker pada tutorial tersebut agak terlalu ringkas, jadi saya cuba cari kalau ada orang lain yang dah buat config file untuk Apache + PHP + MySQL yang boleh install version PHP yang berbeza, dan terjumpa repo Github ini ⁽²⁾. Sekarang saya hanya gunakan config file tersebut untuk setup & run development server saya pada komputer (localhost).

Cuma waktu sekarang saya belum dapat lagi deploy blog saya ke server guna Docker, sebab harga webhosting yang sokong Docker deployment masih premium lagi.

Dan satu lagi, saya masih cuba nak setup development server kat yang guna Windows, tapi masih tercari² cara betul untuk setup SSL untuk localhost. Kat Mac mini dah ok dah SSL, dah boleh buka localhost guna https.

⁽¹⁾ https://www.sitepoint.com/docker-php-development-environment/
⁽²⁾ https://github.com/sprintcube/docker-compose-lamp

Komentar (0):

FB: https://www.facebook.com/100810608155424/posts/393642962205519/

Tulis komen: