Panduan Bahasa dan Kerangka ke...

Panduan Menjalankan Aplikasi Laravel dalam Kontainer

32min

Back4App Containers adalah platform yang kuat untuk hosting aplikasi Laravel. Dengan kemampuannya untuk secara otomatis menerapkan aplikasi Laravel yang terdocker, Anda dapat meluncurkan proyek Anda dalam lingkungan yang dapat diskalakan dan fleksibel dengan mudah.

Dalam panduan ini, kami akan memandu Anda melalui proses mempersiapkan dan menerapkan aplikasi Laravel Anda di Back4App Containers, mencakup segala hal mulai dari proyek sederhana hingga pengaturan yang lebih kompleks. Kami akan mulai dengan persiapan yang diperlukan, kemudian beralih ke dockerizing aplikasi, mengujinya secara lokal, mendorong proyek ke GitHub, mengatur proyek di Back4App Containers, memantau penerapan, dan memecahkan masalah umum.

Jika Anda memiliki pertanyaan atau komentar, silakan bergabung dalam percakapan di saluran #Containers di Komunitas Back4app di Slack. Kapan saja Anda juga dapat menghubungi kami di community@back4app.com.

Kapan saja, jika Anda ingin memeriksa contoh proyek Laravel yang berfungsi di kontainer Back4app, kunjungi: https://github.com/templates-back4app/containers-php-laravel-sample

1-Persiapkan aplikasi Laravel Anda

a. Struktur Proyek:

  • Verifikasi bahwa aplikasi Laravel Anda mengikuti struktur direktori yang benar, dengan semua file dan folder yang diperlukan, seperti app, routes, resources, dan public, terorganisir dengan baik.

b. Ketergantungan:

  • Periksa apakah semua ketergantungan yang diperlukan terdaftar di composer.json file, termasuk versi yang benar.
  • Pastikan Anda telah menginstal semua ketergantungan menggunakan composer install untuk menghasilkan file composer.lock.

c. Variabel Lingkungan:

  • Jika aplikasi Anda bergantung pada variabel lingkungan, pastikan Anda memiliki file .env dengan variabel yang diperlukan didefinisikan.
  • Saat menerapkan ke Back4App Containers, Anda perlu mengonfigurasi variabel lingkungan ini di pengaturan penerapan.

d. Pengaturan Server (jika berlaku):

  • Jika aplikasi Laravel Anda mencakup server kustom (misalnya, Apache atau Nginx), pastikan itu diatur dan dikonfigurasi dengan benar untuk melayani aplikasi Laravel Anda.
  • Uji server Anda secara lokal untuk memastikan ia berfungsi seperti yang diharapkan.

e. Optimasi Aplikasi:

  • Optimalkan aplikasi Laravel Anda dengan menerapkan praktik terbaik kinerja.
  • Gunakan alat seperti Lighthouse untuk mengaudit aplikasi Anda dan mengatasi masalah kinerja atau aksesibilitas.

f. Kompatibilitas Lintas Browser:

  • Uji aplikasi Anda di berbagai browser dan perangkat untuk memastikan rendering dan fungsionalitas yang tepat.

Setelah Anda meninjau dan mempersiapkan aplikasi Laravel Anda dengan seksama, Anda dapat melanjutkan ke langkah berikutnya, yaitu membuat Dockerfile untuk proyek Anda.



2-Dockerisasi

Dockerisasi aplikasi Laravel melibatkan pembuatan Dockerfile di direktori root proyek Anda. Dockerfile berisi instruksi untuk membangun gambar Docker dari aplikasi Anda, yang kemudian dapat diterapkan ke Kontainer Back4App. Berikut adalah penjelasan rinci tentang cara membuat Dockerfile untuk aplikasi Laravel biasa:

1-Buat file baru bernama Dockerfile (tanpa ekstensi file) di direktori root aplikasi Laravel Anda.

2-Tentukan gambar dasar: Mulai Dockerfile dengan menentukan gambar dasar menggunakan perintah FROM. Untuk aplikasi Laravel yang khas, gambar dasar harus berupa gambar PHP, misalnya, php:8.1-apache.

Dockerfile


3-Tetapkan direktori kerja: Gunakan perintah WORKDIR untuk menetapkan direktori kerja untuk aplikasi Anda di dalam kontainer Docker. Ini adalah tempat di mana file aplikasi Anda akan disimpan dan dieksekusi.

Dockerfile


4-Salin file proyek: Salin semua file dari direktori aplikasi Laravel ke dalam kontainer Docker menggunakan perintah COPY.

Dockerfile


5-Instal dependensi: Gunakan perintah RUN untuk menginstal dependensi yang diperlukan untuk aplikasi Laravel Anda menggunakan composer install.

Dockerfile




6-Siapkan server Apache: Aktifkan modul rewrite Apache, konfigurasikan file 000-default.conf untuk menyertakan pengaturan Apache yang tepat untuk Laravel, dan siapkan variabel lingkungan Apache.

Dockerfile


7-Hasilkan kunci aplikasi Laravel: Laravel memerlukan kunci aplikasi untuk mengenkripsi sesi pengguna dan data sensitif lainnya. Gunakan perintah RUN untuk menghasilkan kunci aplikasi.

Dockerfile


8-Bangun aplikasi Laravel: Tambahkan perintah RUN untuk membangun aplikasi Laravel Anda menggunakan skrip build Anda, biasanya composer dump-autoload, php artisan config:cache, php artisan route:cache dan php artisan view:cache.

Dockerfile


9-Paparkan port server: Gunakan perintah EXPOSE untuk menentukan port di mana server Anda akan berjalan di dalam kontainer Docker. Misalnya, Anda dapat menggunakan port 80.

Dockerfile


10-Mulai server: Gunakan perintah CMD untuk menentukan perintah yang memulai server untuk melayani aplikasi Laravel yang telah Anda bangun.

Dockerfile


Dockerfile lengkap untuk aplikasi Laravel biasa harus terlihat seperti ini:

Dockerfile
Dockerfile


3-Uji Proyek Anda Secara Lokal

Sebelum menerapkan aplikasi Laravel Anda di Back4App Containers, penting untuk mengujinya secara lokal menggunakan Docker. Ini membantu memastikan bahwa aplikasi Anda berjalan seperti yang diharapkan dan membantu Anda mengidentifikasi serta memperbaiki masalah sebelum penerapan.

Bangun gambar Docker untuk aplikasi Laravel Anda

Di terminal Anda, navigasikan ke direktori root proyek Anda dan jalankan perintah berikut, mengganti nama-aplikasi-anda dengan nama aplikasi Anda:

docker build -t nama-aplikasi-anda .

Jalankan kontainer Docker secara lokal

Selanjutnya, jalankan perintah berikut untuk memulai kontainer Docker secara lokal. Perintah ini memetakan port yang diekspos oleh kontainer (misalnya, 80) ke port di mesin lokal Anda (misalnya, 8000):

docker run -p 8080:80 nama-aplikasi-anda

Uji aplikasi Anda

Buka browser web dan navigasikan ke http://localhost:8080 untuk melihat aplikasi Laravel Anda. Pastikan semuanya berfungsi seperti yang diharapkan. Jika Anda mengalami masalah, selesaikan sebelum melanjutkan ke langkah berikutnya.

4-Push proyek Anda ke GitHub

Buat sebuah .gitignore file di direktori root proyek Anda untuk mengecualikan file yang tidak perlu atau sensitif dari repositori Anda (misalnya, vendor, .env, node_modules, dll.). Inisialisasi repositori Git, commit file proyek Anda, dan push ke repositori jarak jauh (misalnya, di GitHub).

gitCopy codegit add . git commit -m "Initial commit" git remote add origin <your-remote-repo-url> git push -u origin master

5-Deploy aplikasi Anda di Back4App Containers

Setelah membuat akun Back4App Anda, Anda dapat mengikuti langkah-langkah yang terdaftar di Dokumen:

Singkatnya, kontainer akan mengikuti instruksi yang terperinci di Dockerfile Anda dan mulai membuat Aplikasi Anda.

6-Monitor deployment dan tangani kemungkinan kesalahan

Perhatikan log dan status deployment di dasbor Back4App Containers. Tangani setiap kesalahan atau masalah yang muncul selama deployment. Dalam kasus proyek yang lebih kompleks, pastikan semua layanan yang diperlukan (seperti basis data atau API eksternal) dikonfigurasi dengan benar dan dapat diakses.

7-Menyelesaikan masalah umum

Kesalahan deployment umum saat menjalankan Aplikasi Laravel di Back4App Containers terdaftar di sini. Kesalahan umum lainnya saat melakukan deployment Aplikasi Laravel adalah:

Konfigurasi port yang salah

Aplikasi Laravel harus dikonfigurasi untuk berjalan di port yang ditentukan saat dikerahkan di Back4App Containers. Jika aplikasi masih tidak dapat diakses, periksa Dockerfile untuk memastikan port yang benar diekspos (misalnya, EXPOSE 80 untuk port 80).

Ketergantungan yang tidak kompatibel atau hilang

Pastikan semua ketergantungan yang diperlukan terdaftar di composer.json file dan bahwa versi mereka kompatibel satu sama lain dan dengan kode aplikasi Anda. Ketergantungan yang hilang atau tidak kompatibel dapat menyebabkan kesalahan saat runtime.

Variabel lingkungan atau konfigurasi yang tidak valid

Periksa apakah aplikasi Anda bergantung pada variabel lingkungan atau file konfigurasi tertentu, dan pastikan mereka diatur dengan benar di lingkungan Back4App Containers. Atur variabel lingkungan yang diperlukan di Dockerfile Anda menggunakan perintah ENV.

Tidak dapat menentukan nama domain lengkap server" kesalahan

Masalah: Kesalahan ini terjadi ketika Apache tidak dapat menentukan nama domain lengkap (FQDN) dari server.

Solusi: Untuk menekan kesalahan ini, Anda dapat mengatur direktif ServerName secara global dalam konfigurasi Apache. Modifikasi file konfigurasi Apache (apache-config.conf) sebagai berikut:

apache-config.conf






500 Kesalahan Internal Server

Masalah: Kesalahan ini menunjukkan bahwa ada masalah dengan konfigurasi server atau aplikasi itu sendiri.

Solusi:

  • Periksa log kesalahan Apache (/var/log/apache2/error.log) untuk pesan kesalahan yang lebih spesifik. Ini dapat membantu mengidentifikasi penyebab utama kesalahan.
  • Verifikasi bahwa file konfigurasi Apache (apache-config.conf) telah disiapkan dengan benar dengan DocumentRoot yang sesuai dan direktif Directory untuk aplikasi Laravel Anda.
  • Pastikan bahwa ekstensi PHP yang diperlukan telah diinstal dan diaktifkan dalam Dockerfile. Gunakan perintah docker-php-ext-install untuk menginstal ekstensi yang diperlukan, dan perintah RUN a2enmod untuk mengaktifkan modul Apache.
  • Periksa izin file dan kepemilikan file aplikasi Laravel Anda. Gunakan perintah chown untuk memastikan bahwa file dimiliki oleh pengguna yang sesuai (www-data dalam kebanyakan kasus).



Masalah konfigurasi Apache

  1. Masalah: Pengaturan Apache yang salah atau tidak terkonfigurasi dapat menyebabkan kesalahan atau perilaku yang tidak terduga.
  2. Solusi:
    • Periksa kembali file konfigurasi Apache (apache-config.conf) untuk memastikan bahwa itu menunjuk dengan benar ke DocumentRoot aplikasi Laravel dan memiliki direktif Directory yang sesuai.
    • Aktifkan modul rewrite dengan menjalankan RUN a2enmod rewrite dalam Dockerfile. Ini diperlukan agar routing Laravel berfungsi dengan baik.

Ketergantungan yang hilang atau tidak benar

  1. Masalah: Jika aplikasi Laravel Anda memiliki ketergantungan yang hilang atau tidak benar, itu dapat mengakibatkan kesalahan atau perilaku yang tidak terduga.
  2. Solusi:
    • Periksa file composer.json untuk memastikan bahwa semua ketergantungan yang diperlukan terdaftar, termasuk versi yang benar.
    • Jalankan composer install untuk menginstal ketergantungan dan menghasilkan file composer.lock.
    • Verifikasi bahwa ekstensi PHP yang diperlukan telah diinstal dan diaktifkan di Dockerfile menggunakan perintah docker-php-ext-install.

Masalah izin file

  1. Masalah: Izin file yang tidak benar dapat menyebabkan masalah dengan penyimpanan file atau cache Laravel.
  2. Solusi:
    • Gunakan perintah chown di Dockerfile untuk mengubah kepemilikan file aplikasi Laravel ke pengguna yang sesuai (www-data dalam kebanyakan kasus).
    • Pastikan bahwa direktori penyimpanan dan cache memiliki izin yang benar. Anda dapat menjalankan perintah chmod di Dockerfile untuk mengatur izin yang sesuai.

Kecelakaan aplikasi atau pengecualian yang tidak ditangani

Pengecualian yang tidak ditangani atau kecelakaan dalam kode aplikasi Laravel Anda dapat menyebabkan kegagalan penyebaran atau perilaku yang tidak terduga. Periksa log aplikasi Anda untuk pesan kesalahan, dan tangani masalah apa pun dalam kode Anda. Periksa log kontainer dengan menjalankan docker logs nama-aplikasi-anda untuk melihat apakah ada kesalahan atau pengecualian yang terjadi. Gunakan alat seperti Sentry untuk melacak dan memantau kesalahan dalam aplikasi Anda.

Konfigurasi server

Jika aplikasi Laravel Anda mencakup konfigurasi server kustom (misalnya, Apache atau Nginx), pastikan itu dikonfigurasi dengan benar di Dockerfile dan bahwa modul atau konfigurasi yang diperlukan telah diinstal.

Izin file yang salah

Izin file yang salah dapat menyebabkan kesalahan runtime saat menerapkan aplikasi Laravel di Back4App Containers. Pastikan bahwa direktori dan file yang diperlukan memiliki izin yang benar, seperti yang dijelaskan dalam dokumentasi Laravel.

Batasan memori

Jika aplikasi Anda kehabisan memori saat diterapkan di Back4App Containers, pertimbangkan untuk meningkatkan batas memori di Dockerfile menggunakan pengaturan PHP.ini.

Masalah jaringan

Jika aplikasi Laravel Anda bergantung pada layanan eksternal atau API, pastikan bahwa mereka dikonfigurasi dengan benar dan dapat diakses dari dalam lingkungan Back4App Containers. Gunakan perintah jaringan Docker untuk memecahkan masalah jaringan.

8-Skalakan aplikasi Anda

Untuk proyek yang lebih kompleks yang memerlukan sumber daya tambahan atau penskalaan horizontal/vertikal, pertimbangkan untuk meningkatkan rencana Back4app Containers Anda untuk menangani peningkatan lalu lintas dan beban.

9-Aplikasi Contoh

Untuk proyek aplikasi Laravel contoh, Anda dapat pergi ke: https://github.com/templates-back4app/containers-php-laravel-sample