Tertarik mengambil jalur cepat dan melewatkan tutorial di bawah ini? Beli Ebook Membangun Restful API dengan Lumen - Studi Kasus Aplikasi Kasir Semua dikupas tuntas dalam Ebook tersebut. Saat ini sedang ada diskon Black Friday dengan diskon 50%. Jangan sampai ketinggalan ya. Show Pengantar SingkatSebelum kita mulai, perlu diketahui bahwa artikel ini bukanlah tutorial lengkap tentang Docker atau penjelasan tentang Docker. Ini lebih merupakan panduan untuk menyiapkan lingkungan pengembangan lokal dengan cepat menggunakan Docker dan docker-compose. LumenLumen adalah micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dengan ekosistem Laravel. Secara konsep, Lumen menerapkan konsep MVC (Model, View, Controller). DockerSebelum kita mulai, perlu diketahui bahwa tahap ini bukanlah pembahasan lengkap tentang Docker atau penjelasan tentang seluk-beluk di dalam docker. Ini lebih merupakan panduan yang disederhanakan untuk menyiapkan lingkungan pengembangan lokal dengan cepat menggunakan Docker dan docker-compose, dibandingkan dengan memasang LAMP langsung di PC/laptop kita. Menurut opensource.com, penjelasan singkat tentang Docker seperti berikut ini.
Kita dapat menganggap Docker sebagai VM yang dipermudah. Mengapa ini bermanfaat atau berguna? Jika kita memiliki beberapa server production yang menjalankan versi Linux, PHP, atau perangkat lunak web lainnya yang berbeda, variabel-variabel tersebut dapat direplikasi dalam containers(wadah). Kita dapat menjamin bahwa aplikasi akan berjalan persis seperti yang dimaksudkan pada server production. Jika kita memiliki beberapa proyek Lumen yang mencakup versi berbeda, Kita dapat membuat konfigurasi Docker khusus untuk setiap aplikasi tanpa harus mengimplementasikan sesuatu seperti pengalih versi PHP dan memodifikasi konfigurasi server kita yang sebenarnya. Kita bahkan dapat mengakses kedua proyek secara bersamaan, dengan masing-masing containers(wadah) berjalan terisolasi dari yang lain. Persiapan Lingkungan KerjaSebelum memulai, penulis berasumsi bahwa kita sudah mengistal Docker pada PC/Laptop. Jika belum, kita bisa mengikuti panduan lengkap di website resmi Docker. Silahkan kunjungi situs resmi untuk proses instalasi Docker https://docs.docker.com/desktop/ Struktur ProyekBerikut adalah struktur yang akan kita gunakan pada tutorial kali ini
Penjelasan singkat struktur di atas:
Memulai dengan docker-compose.ymlUntuk memulai, buat sebuah file 1 dan tambahkan kode berikut ini di dalamnya:
Penjelasan singkat yang baru saja kita tambahkan:
Menambahkan NginxKita akan menambahkan nginx di dalam section services. Silahkan buka file 1 dan sesuaikan kode seperti di bawah ini:
Yang telah kita lakukan di atas adalah memberi tahu Docker bahwa kita menginginkan sebuah containers(wadah) bernama nginx, mengambil dari image 8 (yang sumber lengkapnya dapat Anda lihat di sini ). Kita menggunakan linux alpine sebagai OS dasar karena ringan dan responsif.Selanjutnya kita beri nama container nginx dan ekspos port 9 ke port 0 pada mesin lokal kita. Port inilah yang nantinya akan kita gunakan untuk akses aplikasi, dan kita dapat menyesuaikannya port yang kita sukai.Untuk volume server, kita menambahkan dua berikut:
Dengan menambahkan 5 dan 6 di bawah item 7 , kita memberi tahu Docker bahwa pada inisialisasi container(wadah) 5 dan 6 harus dijalankan sebelum nginx berjalan.Terakhir, kita menetapkan bahwa container(wadah) ini secara eksplisit berada di bawah jaringan 0 yang kita buat di awal file 1.Menambahkan MySQLKita akan menambahkan mysql di dalam section services. Silahkan buka file 1 dan sesuaikan kode seperti di bawah ini:
Kita akan menentukan image dan nama container(wadah), serta mengatur beberapa pengaturan lain yang saya rasa telah membantu menjaga stabilitas MySQL dalam container(wadah). Kemudian buat satu folder dengan nama 6 di sejajar dengan folder nginx dan src . Ini berguna agar data pada MySQL tidak hilang ketika kita menjalankan perintah 6.Sama seperti dengan 0.Menambahkan PHPTidak seperti Nginx dan MySQL, saat menambahkan container(wadah) PHP akan sedikit berbeda, dan sedikit lebih rumit. Dengan dua layanan sebelumnya kita dapat langsung mereferensikan image untuk membangun container(wadah), namun karena ketergantungan yang dibutuhkan Lumen, kita akan benar-benar membangun image sendiri melalui 2.Sebelum kita ke bagian 2, tambahkan kode berikut ini sebagai service berikutnya (dan terakhir) ke file 1.
Kita sudah dapat melihat perbedaannya. Seperti dengan container(wadah) nginx, dan menentukan volume yang sama untuk direktori 2, kemudian mengekspos port 3 untuk container(wadah) dan mengatur jaringan ke 4.Sekarang setelah kita menambahkan service tersebut, saatnya untuk memberikan sedikit perubahan pada file 2, sesuaikan seperti kode berikut ini:
Menentukan bahwa yang kita ingin pada container(wadah) 5 dibangun menggunakan 7.4-fpm-alpine. Menginstal ekstensi 7 dan 8 PHP yang digunakan ORM Laravel.Instalasi LumenPerlu kita ketahui bahwa untuk menginstal Lumen terdapat dua cara, yaitu cara pertama menggunakan Lumen Installer dan cara kedua menggunakan Composer Create-Project.
Setelah kita jalankan perintah di atas, maka secara otomatis akan melakukan download repository.
Gambar di atas menunjukkan bahwa pada 8 kita sedang download repository lumen.Konfigurasi NginxKita masuk pada bagian konfigurasi Nginx, dimana web server yang dipakai adalah nginx. Namun jika ada yang pakai selain web server nginx juga tidak masalah, tinggal disesuaikan 2 direktori pada konfigurasinya.Kurang lebih konfigurasi nginx seperti berikut ini.
Yang perlu di perhatikan dan sesuaikan adalah bagian 2 dan 1.
Menjalankan DockerKita sudah menyiapkan semua secara berurutan, sekarang saatnya untuk merakit sebuah jaringan Docker. Buka 5 dan navigasikan ke direktori 2 proyek ini. Karena salah satu container(wadah) 5 menggunakan 2, dan ini adalah pertama kalinya kita menjalankan container(wadah), hal pertama yang perlu kita lakukan adalah menjalankan perintah 9 untuk menghasilkan data image:
Ini akan memakan waktu beberapa saat untuk menyelesaikan, dan jika berhasil kita akan melihat pesan berhasil pada 5. Kita dapat melanjutkan dengan menjalankan perintah:
Docker akan membuat jaringan 0 dan kemudian membuat tiga container(wadah) yang telah kita tentukan di bagian layanan dari file 1. Flag nginx 5, itu adalah singkatan dari detached dan membuat container tetap berjalan setelah semua perintah diproses. Jika tidak menggunakan flag tersebut, Docker akan menghentikannya setelah inisialisasi selesai.Akses AplikasiDengan asumsi semua langkah di atas sukses, sekarang kita dapat mengunjungi container(wadah) kita dengan port yang terbuka dan melihat halaman aplikasi kita. Buka browser, dan pergi ke http://localhost:8080 di mana 8080 adalah port pertama yang kita tentukan di bawah service 1. |