Cara Instalasi Laravel Menggunakan Portainer di Ubuntu Server

 


Membangun Aplikasi Laravel Menggunakan Docker dan Portainer: Langkah-Langkah Praktis yang Saya Lakukan

Hari ini saya memutuskan untuk menantang diri sendiri dengan membangun aplikasi Laravel di server Ubuntu saya menggunakan Docker dan Portainer. Tujuannya adalah untuk membuat aplikasi Laravel yang sepenuhnya terisolasi dalam kontainer, sehingga mudah dipindahkan, diatur, dan dijalankan. Berikut adalah langkah-langkah yang saya lakukan untuk menyelesaikan tugas ini, serta beberapa tips dan informasi tambahan yang menarik.

Langkah 1: Memastikan Docker dan Portainer Sudah Terinstal

Langkah pertama dalam proses ini adalah memastikan bahwa Docker dan Portainer sudah terinstal di server Ubuntu saya. Docker adalah platform yang memungkinkan aplikasi dijalankan dalam kontainer, sementara Portainer adalah alat antarmuka grafis yang memudahkan manajemen kontainer Docker.

Sebelum mulai, saya memastikan Docker dan Portainer telah terinstal dengan menjalankan perintah berikut di terminal server Ubuntu saya:

```bash
docker --version
docker-compose --version
```

Jika kedua alat tersebut sudah terinstal dengan benar, saya melanjutkan ke langkah berikutnya.

Langkah 2: Menyiapkan `docker-compose.yml` untuk Laravel

Setelah memastikan lingkungan Docker siap, saya melanjutkan dengan membuat file docker-compose.yml untuk aplikasi Laravel. Docker Compose memungkinkan saya untuk mendefinisikan dan menjalankan aplikasi multi-layanan (seperti database, PHP-FPM, dan Nginx) dalam satu file konfigurasi yang mudah dipahami.

Berikut adalah contoh konfigurasi dasar yang saya buat untuk Laravel:

```yaml
version: '3'
services:
app:
image: php:8.0-fpm
container_name: laravel-app
volumes:
- ./html:/var/www/html
networks:
- laravel_network
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
web:
image: nginx:latest
container_name: laravel-nginx
volumes:
- ./html:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "8000:80"
networks:
- laravel_network
db:
image: mysql:8.0
container_name: laravel-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
networks:
- laravel_network
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
networks:
laravel_network:
driver: bridge
```

File ini mendefinisikan tiga layanan:
- app: Menjalankan PHP-FPM untuk Laravel.
- web: Menjalankan Nginx sebagai web server.
- db: Menjalankan MySQL untuk database.

Setelah membuat file docker-compose.yml, saya menjalankan perintah berikut untuk memulai kontainer:

```bash
docker-compose up -d
```

Kontainer pun berhasil berjalan di latar belakang.

Langkah 3: Mengatasi Masalah dengan `APP_KEY`

Setelah Laravel berhasil dijalankan di dalam kontainer, saya menghadapi masalah umum yang sering terjadi: Laravel tidak dapat menemukan atau mengonfigurasi APP_KEY. Kunci ini diperlukan oleh Laravel untuk enkripsi dan manajemen sesi. Biasanya, Laravel menghasilkan APP_KEY secara otomatis menggunakan perintah php artisan key:generate, namun di dalam kontainer, perintah ini gagal dijalankan karena beberapa alasan.

Untuk mengatasi masalah ini, saya menghasilkan kunci secara manual menggunakan OpenSSL dengan perintah:

```bash
openssl rand -base64 32
```

Hasil dari perintah ini adalah kunci acak yang dapat digunakan untuk APP_KEY. Kemudian, saya membuka file .env yang terletak di direktori proyek Laravel dan mengganti nilai APP_KEY dengan hasil dari perintah di atas, seperti berikut:

```env
APP_KEY=base64:KMvkfPqhhMhP2ja1C7S3tDXmb1g3RolfghWjSfg/HY8=
```

Langkah 4: Menjalankan Migrasi Database

Setelah berhasil mengonfigurasi APP_KEY, langkah berikutnya adalah menjalankan migrasi untuk menyiapkan database Laravel. Saya menggunakan perintah berikut untuk menjalankan migrasi:

```bash
docker-compose exec app php artisan migrate
```
Perintah ini menjalankan migrasi di dalam kontainer app yang berisi aplikasi Laravel. Setelah migrasi selesai, database saya siap digunakan.

Langkah 5: Menyediakan Akses ke Aplikasi

Aplikasi Laravel saya kini berjalan di dalam kontainer Docker, tetapi bagaimana cara mengaksesnya? Saya memetakan port 80 di dalam kontainer ke port 8000 di mesin host menggunakan pengaturan di docker-compose.yml:

```yaml
ports:
- "8000:80"
```

Dengan ini, saya bisa mengakses aplikasi Laravel melalui browser dengan mengunjungi http://<IP-server>:8000.

Langkah 6: Memeriksa Aplikasi di Browser

Sekarang saya dapat membuka browser dan mengunjungi alamat http://<IP-server>:8000, dan saya melihat halaman selamat datang Laravel yang menunjukkan bahwa aplikasi berhasil dijalankan!


Informasi Menarik Tentang Docker dan Laravel

1. Docker Memudahkan Pengembangan Aplikasi
Dengan Docker, kita bisa menjalankan aplikasi dan dependensinya dalam kontainer terisolasi. Ini menghilangkan masalah perbedaan lingkungan pengembangan dan produksi, karena aplikasi akan berjalan di kontainer yang sama, apapun mesin fisiknya.

2. Laravel dan Keamanan
Laravel hadir dengan berbagai fitur keamanan, seperti perlindungan CSRF, XSS, dan SQL Injection. Salah satu fitur penting lainnya adalah APP_KEY yang digunakan untuk mengenkripsi data sensitif. Pastikan kunci ini diatur dengan benar untuk menjaga aplikasi tetap aman.

3. Portainer: Manajemen Docker yang Mudah
Portainer mempermudah pengelolaan kontainer Docker tanpa harus menggunakan baris perintah sepanjang waktu. Dengan antarmuka grafis yang sederhana, saya bisa memantau status kontainer, mengakses log, dan melakukan tugas-tugas administratif lainnya hanya dengan beberapa klik.

4. PHP-FPM untuk Kinerja Optimal
PHP-FPM (FastCGI Process Manager) adalah cara yang efisien untuk menjalankan PHP. Dibandingkan dengan server PHP tradisional, PHP-FPM lebih cepat dan lebih baik dalam menangani banyak permintaan sekaligus, menjadikannya pilihan tepat untuk aplikasi seperti Laravel.


Kesimpulan

Dengan menggunakan Docker dan Portainer, saya berhasil menjalankan aplikasi Laravel di dalam kontainer dengan mudah dan efisien. Meskipun saya menghadapi beberapa tantangan, seperti pengaturan APP_KEY, semuanya dapat diatasi dengan pendekatan yang tepat. Docker memberikan fleksibilitas besar bagi pengembang, memungkinkan aplikasi untuk dijalankan di mana saja tanpa khawatir tentang perbedaan lingkungan. Ini adalah langkah besar menuju pengembangan aplikasi yang lebih cepat, lebih aman, dan lebih mudah dipelihara.

Jika Anda tertarik untuk mencoba setup serupa, saya sangat merekomendasikan untuk mulai mengeksplorasi Docker dan Portainer. Keduanya adalah alat yang sangat powerful untuk pengembang modern!


Semoga artikel ini dapat memberikan wawasan dan instruksi yang bermanfaat bagi Anda yang ingin mencoba menggunakan Docker dan Laravel dalam proyek pengembangan aplikasi Anda!

Komentar

Postingan populer dari blog ini

Cara Mengupload Projek Laravel ke Hosting dan Domain Gratis (InfinityFree)

Automation With Ansible by Adinusa.id

Mempelajari "Linux System Administration" by Adinusa