Pernah nggak, kamu berhasil bikin aplikasi Laravel yang keren di laptop, tapi begitu ditanya "udah bisa diakses online belum?" — kamu langsung keringat dingin? Kalau iya, artikel ini memang ditulis buat kamu. Deploy Laravel Docker VPS adalah langkah final yang mengubah proyek lokal menjadi aplikasi nyata yang bisa diakses siapapun di seluruh dunia.
Ini adalah artikel ke-10 sekaligus penutup dari seri Belajar Docker: Docker from Zero to Zorro. Kita sudah melewati perjalanan panjang — mulai dari instalasi Docker, memahami container, sampai mengelola file .env dengan aman. Sekarang saatnya kita bawa semua itu ke server sungguhan.
Deploy Laravel Docker VPS adalah proses memindahkan container Docker yang sudah berjalan di lokal ke sebuah Virtual Private Server — sehingga aplikasimu bisa hidup 24 jam online, stabil, dan mudah diupdate kapan saja tanpa takut "tapi di laptop gue jalan kok".
🛠️ Persiapan Sebelum Deploy Laravel Docker ke VPS
Bayangkan kamu mau pindah rumah. Sebelum pindah, kamu pasti cek dulu: barang udah dikemas? Alamat baru sudah ada? Kunci rumah baru sudah dipegang? Nah, deploy ke VPS itu sama — ada checklist yang wajib dipastikan sebelum eksekusi.
Untuk project Laravel skala kecil-menengah, DigitalOcean Droplet $6/bulan atau Hetzner CX11 sudah lebih dari cukup. Jangan overthink soal spek di awal — kamu bisa upgrade kapan saja kalau traffic meningkat.
🐳 Instalasi Docker di VPS untuk Deploy Laravel
Ibarat dapur restoran, Docker adalah kompor dan peralatannya — tanpa itu, semua bahan (code kamu) nggak bisa dimasak. Berikut cara install Docker di VPS Ubuntu dengan benar:
Update sistem & install dependensi
Login ke VPS via SSH, lalu jalankan perintah berikut:
sudo apt update && sudo apt upgrade -y sudo apt install -y ca-certificates curl gnupg lsb-release
Tambah Docker GPG key & repository
Ini memastikan kamu install Docker dari sumber resmi, bukan versi "ngawur" dari repo Ubuntu.
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install Docker Engine & Docker Compose
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # Verifikasi instalasi docker --version docker compose version
Sejak Docker Compose v2, perintahnya berubah dari docker-compose (dengan tanda hubung) menjadi docker compose (spasi). Pastikan kamu pakai versi plugin yang terbaru agar tidak error.
🚀 Langkah Deploy Laravel Docker VPS: Step by Step
Ini bagian paling seru — saatnya kode Laravelmu "terbang" ke VPS. Anggap saja ini seperti kirim paket: kamu perlu packaging yang rapi (Docker image), kurir yang reliable (Git atau Docker Hub), dan alamat tujuan yang jelas (VPS kamu).
Clone project ke VPS via Git
Cara termudah adalah push project ke GitHub/GitLab dulu, kemudian clone di VPS.
# Di VPS, buat direktori project mkdir -p /var/www && cd /var/www # Clone project dari GitHub git clone https://github.com/username/nama-project-laravel.git cd nama-project-laravel
Siapkan file .env untuk production
# Copy .env.example lalu edit sesuai production cp .env.example .env # Edit dengan nano atau vim nano .env
Pastikan kamu set: APP_ENV=production, APP_DEBUG=false, APP_URL sesuai domain/IP VPS, dan koneksi database sesuai service Docker kamu.
Jalankan Docker Compose di VPS
Inilah momen "abrakadabra" — semua service akan otomatis berjalan.
# Build image dan jalankan semua container docker compose up -d --build # Cek status container docker compose ps # Lihat log jika ada masalah docker compose logs -f app
Jalankan perintah artisan Laravel
# Masuk ke container app docker compose exec app sh # Generate app key php artisan key:generate # Jalankan migration php artisan migrate --force # Optimasi cache untuk production php artisan config:cache php artisan route:cache php artisan view:cache # Set permission storage chown -R www-data:www-data storage bootstrap/cache
Jangan pernah jalankan php artisan migrate:fresh di production! Perintah ini akan menghapus semua data di database. Selalu gunakan migrate --force saja.
🔒 Konfigurasi Nginx Reverse Proxy & SSL untuk Laravel Docker di VPS
Tanpa Nginx dan SSL, aplikasimu bisa diakses tapi tidak aman — seperti toko tanpa pintu kaca, semua transaksi terlihat. Kita akan pakai Nginx sebagai reverse proxy dan Let's Encrypt untuk SSL gratis.
- Mudah di-replikasi di server lain
- Isolasi penuh antar service
- Update tanpa downtime (rolling)
- Environment konsisten
- Setup lebih lama & error-prone
- "Works on my machine" problem
- Upgrade PHP = resiko besar
- Rollback sulit
Tambahkan service Nginx ke docker-compose.yml kamu:
services: app: build: . container_name: laravel_app volumes: - .:/var/www networks: - app-network nginx: image: nginx:alpine container_name: laravel_nginx ports: - "80:80" - "443:443" volumes: - .:/var/www - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf - ./docker/nginx/certs:/etc/nginx/certs networks: - app-network db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: ${DB_DATABASE} volumes: - db-data:/var/lib/mysql networks: - app-network networks: app-network: driver: bridge volumes: db-data:
Lebih dari 60% developer PHP yang pakai Docker di production menggunakan Nginx sebagai reverse proxy — bukan Apache. Nginx lebih ringan, lebih cepat untuk static files, dan lebih mudah dikonfigurasi untuk concurrent connections tinggi.
✅ Checklist Deploy Laravel Docker VPS agar Production-Ready
Sebelum kamu umumkan "website udah online!" ke dunia, pastikan dulu checklist ini semua hijau. Ini yang membedakan deploy yang "jalan" dengan deploy yang benar-benar production-ready.
docker compose logs atau integrasi ke tool eksternal
services: app: build: . restart: always # ← tambahkan ini! nginx: image: nginx:alpine restart: always # ← dan ini db: image: mysql:8.0 restart: always # ← dan ini juga
Setelah kamu nyaman dengan deploy manual, pertimbangkan CI/CD menggunakan GitHub Actions. Setiap kali kamu push ke branch main, server otomatis pull dan rebuild container — tanpa perlu SSH manual sama sekali.
Kamu Sudah Sampai di Puncak Gunung Docker!
Di artikel ini kamu sudah belajar cara deploy Laravel Docker VPS dari nol: mulai instalasi Docker di server, clone project, konfigurasi .env production, menjalankan Docker Compose, sampai memastikan aplikasi production-ready dengan Nginx dan SSL.
Ini adalah artikel ke-10 dan penutup dari seri Docker from Zero to Zorro. Perjalanan dari "Docker itu apa?" sampai "Deploy ke VPS sudah!" itu luar biasa. Sekarang giliran kamu buktikan ke dunia!
Belajar Docker: Docker from Zero to Zorro
10 artikel lengkap dari dasar sampai deploy production. Cocok untuk developer PHP & Laravel yang ingin benar-benar paham Docker.
🗂️ Lihat Daftar Isi Lengkap →