deploy laravel docker vps | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: deploy laravel docker vps

Wednesday, May 20, 2026

deploy laravel docker vps

Artikel 10 dari 10 🎓 Seri Docker Zero to Zorro

Deploy Laravel dengan Docker
ke Server VPS: Panduan Lengkap

Artikel penutup dari seri Docker from Zero to Zorro — saatnya kamu bawa Laravel dari laptop ke production VPS dengan cara yang benar, aman, dan bisa di-replikasi siapapun.

#deploy-laravel #docker #VPS #production
⏱ 12
Menit Baca
🎯
Level Pemula–Menengah
📅 2026
Updated

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.

💡 Konsep Utama

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.

Kebutuhan Spesifikasi Minimal Rekomendasi
VPS 1 vCPU, 1 GB RAM 2 vCPU, 2 GB RAM
OS VPS Ubuntu 20.04 LTS Ubuntu 22.04 LTS
Docker Engine v24+ v26+ (latest stable)
Docker Compose v2.x (plugin) v2.24+
Domain / IP Publik IP publik VPS Domain + SSL (Let's Encrypt)
💡
Tips Pilih VPS

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:

1

Update sistem & install dependensi

Login ke VPS via SSH, lalu jalankan perintah berikut:

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release
2

Tambah Docker GPG key & repository

Ini memastikan kamu install Docker dari sumber resmi, bukan versi "ngawur" dari repo Ubuntu.

bash
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
3

Install Docker Engine & Docker Compose

bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Verifikasi instalasi
docker --version
docker compose version
Insight Penting

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).

4

Clone project ke VPS via Git

Cara termudah adalah push project ke GitHub/GitLab dulu, kemudian clone di VPS.

bash
# 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
5

Siapkan file .env untuk production

bash
# 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.

6

Jalankan Docker Compose di VPS

Inilah momen "abrakadabra" — semua service akan otomatis berjalan.

bash
# 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
7

Jalankan perintah artisan Laravel

bash
# 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
⚠️
Perhatian

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.

📊 Perbandingan Pendekatan Deploy
🐳 Docker + Nginx (Recommended)
  • Mudah di-replikasi di server lain
  • Isolasi penuh antar service
  • Update tanpa downtime (rolling)
  • Environment konsisten
⚙️ Manual (tanpa Docker)
  • Setup lebih lama & error-prone
  • "Works on my machine" problem
  • Upgrade PHP = resiko besar
  • Rollback sulit

Tambahkan service Nginx ke docker-compose.yml kamu:

docker-compose.yml
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:
🔥
Fakta Menarik

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.

🗂️ Production Checklist
APP_DEBUG=false — jangan pernah biarkan debug aktif di production
SSL aktif — gunakan Certbot + Let's Encrypt untuk HTTPS gratis
Volume persistence — database dan storage terpasang ke Docker volume
restart: always — container otomatis restart jika VPS reboot
Firewall aktif — UFW dengan port 22, 80, 443 saja yang terbuka
Log monitoringdocker compose logs atau integrasi ke tool eksternal
docker-compose.yml snippet — restart policy
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
💡
Pro Tips: Auto-deploy dengan GitHub Actions

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.

🎉 Kesimpulan

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!

📚 Lihat Semua 10 Artikel Seri 💬 Punya pertanyaan? Tinggalkan komentar di bawah!
🏷️ Tag Artikel
#BelajarDocker #ZeroToZorro #deployLaravelDockerVPS #Laravel #Docker #VPS #Production #Nginx #DockerCompose
📚 Seri Lengkap

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 →
← Artikel Sebelumnya
Artikel 9: Kelola File .env dan Storage Laravel dengan Aman di Docker
Artikel Selanjutnya →
🏆
Ini artikel terakhir dari seri ini. Selamat, kamu sudah Zero to Zorro!

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux