Laravel : Teknologi Virtualisasi Menggunakan Docker
Hai guys, kali ini saya akan share pengalaman dalam men-deploy framework laravel menggunakan docker.
Docker saat ini banyak digunakan oleh para developer sebagai salah satu tool yang membantu dalam proses development sebuah project berbasis website.
Apa itu Docker ?
Docker adalah sebuah teknologi virtualisasi atau bayangan yang memungkinkan kita sebagai developer untuk membangun, mengemas dan menjalankan aplikasi di sistem operasi manapun yang diletakkan pada sebuah container atau wadah.
Kenapa harus Docker ?
Docker memudahkan para developer untuk proses development sebuah project berbasis websiste, sebab dengan menggunakan docker kita mungkin sudah tidak menggunakan XAMPP,LAMPP,WAMPP, karena semua kebutuhan untuk website sudah terinstal di docker yang terletak pada kontainer.
Kebutuhan
sebelum kita praktek menggunakan docker, pastikan mapping dulu kebutuhan web server yang ingin kita instal pada docker, berikut adalah kebutuhannya.
Requirements :
1. NGINX
2. PHP 7.1.19
3. MySQL 5.6
4. Redis
Arsitektur
Praktek
1. Laravel
Instal terlebih dahulu laravel versi terakhir menggunakan perintah ini.
composer create-project --prefer-dist laravel/laravel laradocker
Pastikan laravel berjalan di localhost dengan mengetik perintah ini.
cd laradocker
php artisan serve
Pada browser jalankan laravel dengan perintah ini.
http://localhost:8000/
hasil ketika sudah jalan pada browser.
2. Docker
Setup Docker
Diasumsikan pada laptop kita sudah terinstal docker, langkah selanjutnya buka terminal dan lakukan perintah berikut untuk mengetahui bahwa docker sudah terinstal sesuai dengan versinya.
docker --version
lakukan perintah ini untuk mengecek docker-compose dan pastikan sudah ada berikut versinya juga, docker-compose nantinya akan digunakan sebagai perintah untuk menjalankan container docker secara bersamaan.
docker-compose --version
Konfigurasi file docker
Untuk konfigurasi pada docker kita akan membuat beberapa file yang memiliki fungsi masing-masing untuk menjalankan laravel di docker, berikut file yang dibutuhkan.
docker-compose.yml, berfungsi seperti route yang menjadi konfigurasi awal yang menghubungkan ke beberapa root folder, image dan dockerfile yang dibuat.
app.dockerfile, berfungsi untuk menginstal PHP 7 beserta komponennya sebagai driver untuk menghubungkan ke MySQL.
web.dockerfile, berfungsi untuk menginstal NGINX yang digunakan untuk menjalankan localhost.
vhost.conf, berfungsi untuk sebagai konfigutasi dasar untuk menjalankan NGINX sebagai web server.
Untuk membuat file nya nanti pada root folder di project kita, struktur filenya bisa dilihat pada gambar ini.
docker-compose.yml
app.dockerfile
web.dockerfile
vhost.conf
jika sudah membuat keempat file tersebut dan pastikan bahwa tidak ada yang typo, kemudian jalankan file tersebut dengan perintah ini.
docker-compose up -d
maksut perintah diatas nanti akan pull image yang kita butuhkan yang sudah kita lakukan di file konfigurasi tadi, yang nantinya image tersebut kan membuat sebuah kontainer pada docker. image yang kita buat adalah NGINX, PHP 7, MySQL.
setelah nanti dijalankan dengan perintah docker-compose up -d, lalu pastikan bahwa kontainer sudah berjalan dengan mengetik perintah ini.
docker ps
berikut hasil dari menjalankan docker melalui command line.
kemudian jalankan localhost yang sudah kita instal di docker, dengan bantuan browser.
Menjalankan Database pada Docker
Selanjutnya kita akan mencoba untuk menjalakan database yang sudah kita instal di docker, yang diatas itu masih NGINX saja yang berjalan.
lakukan konfigurasi database pada file .env
setelah itu lakukan migrasi tabel bawaan dari laravel dengan perintah ini.
php artisan migrate
jika berhasil, tambahan sedikit script pada route laravel, kalau saya menginstal laravel 5.6 berarti di file route/web.php.
lakukan pengetesan database dengan URL localhost:8080/testData. Disini digunakan postman untuk membantu proses test pada url.
Menjalankan Cache pada Docker
setelah kita memastikan web server NGINX dan database MySQL sudah berjalan. selanjutnya kita tes redis apakah sudah berjalan juga di docker. redis ini adalah teknologi untuk cache data agar membantu dalam me-load data dalam jumlah besar.
oke, sebelumnya jalan lupa untuk menginstal package pada laravel dengan perintah ini.
composer require predis/predis:~1.0
jika sudah berhasil instal, tambahkan script di file route seperti yang kita lakukan tadi pada sesi database.
lakukan pengetesan database dengan URL localhost:8080/testCache. Disini digunakan postman untuk membantu proses test pada url.
Source Code
untuk lebih jelasnya secara keseluruhan source code nya bisa dilihat di github berikut ini.
Kesimpulan
Yay, sudah selesai belajar kita tentang bagaimana kita membuat sesuatu hal yang baru dalam development project, ya docker memang teknologi yang sedang nge-trend yang sangat membantu untuk mengurangi pusing kepala pada saat proses development, semoga bermanfaat.
see you on top :)