Cara Deploy Aplikasi Web Laravel ke Server VPS Linux Menggunakan Docker Compose

3 mnt baca

 

Cara Deploy Aplikasi Web Laravel ke Server VPS Linux Menggunakan Docker Compose

Mengelola siklus peluncuran (deployment) aplikasi web pada peladen (server) sering kali menjadi tantangan teknis yang rumit. Kendala klasik yang paling sering terjadi adalah ketidaksesuaian versi perangkat lunak antara lingkungan pengembangan lokal dan peladen produksi—sebuah masalah yang sering dikenal dengan istilah "berjalan lancar di komputer saya, tapi rusak di server". Untuk mengatasi inkonsistensi ini, penggunaan teknologi kontainerisasi melalui Docker dan Docker Compose kini menjadi standar industri tingkat enterprise.

Mengapa Memilih Docker untuk Laravel?

Mendeploy Laravel secara tradisional mengharuskan administrator untuk menginstal perangkat lunak seperti PHP, Nginx/Apache, dan basis data langsung ke dalam sistem operasi VPS. Pendekatan ini rentan terhadap konflik versi. Docker menyelesaikan masalah ini dengan mengisolasi setiap komponen ke dalam "kontainer" yang berdiri sendiri.

ParameterDeployment TradisionalDeployment dengan Docker Compose
Isolasi LingkunganSemua aplikasi berbagi sistem operasi dan library yang sama.Setiap servis (Web, PHP, DB) berjalan di ruang terisolasi.
Migrasi ServerMembutuhkan instalasi ulang seluruh perangkat lunak dari awal.Cukup memindahkan konfigurasi kode, lingkungan langsung tercipta identik.
KonsistensiSangat rentan terhadap perbedaan versi PHP atau modul.Dijamin 100% identik antara komputer pengembang dan server produksi.
SkalabilitasPenambahan kapasitas beban kerja sulit dilakukan.Arsitektur kontainer mudah diduplikasi dan diukur skalanya secara horizontal.

Tahapan Implementasi Teknis di VPS Linux

Sebelum memulai, pastikan peladen VPS Linux Anda (Ubuntu/Debian atau distro lainnya) sudah terinstal perangkat lunak Docker Engine dan Docker Compose. Seluruh konfigurasi ini akan didefinisikan dalam bentuk kode (Infrastructure as Code).

1.Konfigurasi Dockerfile:Membuat cetakan lingkungan PHP khusus Laravel.

Di direktori utama (root) proyek Laravel Anda, buat sebuah berkas bernama Dockerfile (tanpa ekstensi). Berkas ini berisi instruksi untuk merakit mesin PHP-FPM dan menginstal ekstensi PHP yang dibutuhkan Laravel, seperti PDO, ekstensi basis data (PostgreSQL/MySQL), dan Composer.

Dockerfile
FROM php:8.2-fpm

# Instalasi dependensi sistem
RUN apt-get update && apt-get install -y \
    git curl libpng-dev libonig-dev libxml2-dev zip unzip

# Instalasi ekstensi PHP
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Mengatur direktori kerja
WORKDIR /var/www/html

# Instal Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
2.Menyusun docker-compose.yml:Menyusun topologi server web dan database.

Buat berkas docker-compose.yml. Ini adalah pengatur orkestrasi yang akan menjalankan Nginx (sebagai web server), PHP-FPM (aplikasi Laravel Anda), dan basis data secara bersamaan dalam satu jaringan virtual internal.

YAML
version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: laravel-app
    volumes:
      - ./:/var/www/html
  webserver:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - app
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: laravel
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
3.Konfigurasi Web Server Nginx:Menghubungkan Nginx ke kontainer PHP.

Buat direktori baru nginx/conf.d dan buat berkas app.conf di dalamnya. Konfigurasi ini akan mengarahkan semua permintaan internet (traffic HTTP) masuk ke direktori public milik Laravel dan meneruskan eksekusi PHP ke kontainer app.

Nginx
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
4.Eksekusi Build dan Menjalankan Kontainer:Proses instalasi dan eksekusi di latar belakang.

Unggah seluruh proyek ke dalam VPS Anda (menggunakan Git atau FTP). Buka terminal VPS, masuk ke direktori proyek, lalu jalankan perintah perakitan.

Bash
docker-compose up -d --build

Perintah ini akan mengunduh sistem operasi dasar, merakit konfigurasi PHP, dan menjalankan seluruh kontainer di latar belakang (detached mode). Setelah selesai, jalankan perintah instalasi paket Composer dan migrasi basis data langsung ke dalam kontainer aplikasi:

Bash
docker-compose exec app composer install
docker-compose exec app php artisan migrate

Kesimpulan

Memanfaatkan Docker Compose untuk meluncurkan aplikasi Laravel di VPS Linux mengubah arsitektur peladen (server) yang tadinya kaku menjadi ekosistem yang sangat dinamis, terukur, dan aman. Dengan mendefinisikan infrastruktur sebagai kode, Anda secara efektif menghilangkan kesalahan konfigurasi manual dan memastikan kompatibilitas 100% antara fase pengembangan dan fase produksi. Pendekatan modern ini memberikan fondasi yang sangat kokoh bagi kelangsungan sistem web, memungkinkan tim pengembang untuk fokus pada inovasi fitur bisnis tanpa harus terus-menerus mengkhawatirkan stabilitas infrastruktur peladen.