Deployment

Deploy Laravel dengan Docker di VPS: Checklist yang Sering Terlupakan Tim Kecil

Deploy Laravel di VPS dengan Docker terlihat sederhana, tapi banyak error produksi justru muncul dari detail kecil seperti proxy trust, storage mount, dan urutan command build.

3 min baca Laravel Docker Deployment
Deploy Laravel dengan Docker di VPS: Checklist yang Sering Terlupakan Tim Kecil

Kenapa checklist deploy masih penting

Banyak tim kecil merasa proses deploy Laravel dengan Docker sudah selesai begitu container berhasil up. Padahal, titik rawan sebenarnya sering baru muncul setelah aplikasi live: file upload tidak jalan, asset salah protocol, cron tidak jalan, queue menumpuk, atau URL yang terbentuk salah karena reverse proxy tidak dipercaya dengan benar.

Checklist deploy bukan soal formalitas. Ia membantu mencegah bug yang mahal di jam operasional.

1. Pisahkan source code dan data runtime

Pola yang paling aman adalah memisahkan folder aplikasi menjadi:

  • repo/ untuk source code
  • shared/ untuk .env dan storage persisten
  • logs/ untuk kebutuhan logging terpisah

Ini membantu saat redeploy, rollback, dan backup. Jangan campur semua file ke satu tempat kalau ingin deploy lebih rapi dalam jangka panjang.

Kalau aplikasi Laravel butuh .env fisik dan storage yang persisten, mount langsung ke path yang benar di container. Misalnya:

  • ../shared/.env:/var/www/html/.env
  • ../shared/storage:/var/www/html/storage

Banyak masalah muncul ketika symlink dari host ikut tercopy ke image, lalu ternyata tidak valid di dalam container.

3. Pastikan reverse proxy benar-benar dipercaya

Kalau Laravel berada di balik Caddy, Nginx, atau load balancer HTTPS, trust proxy wajib benar. Tanpa ini, aplikasi bisa menganggap request datang sebagai HTTP biasa. Dampaknya bisa berupa mixed content, canonical URL salah, callback URL kacau, atau redirect aneh.

4. Perhatikan urutan command build dan runtime

Jangan asal memasukkan semua command artisan ke Docker build stage. Beberapa command bergantung pada env atau storage runtime yang belum ada saat build. Dalam banyak kasus, lebih aman menjalankan command tertentu setelah container hidup.

Contoh yang sering bikin masalah adalah package:discover, cache config, atau command yang membaca storage yang belum termount.

5. Cek upload limit dari dua sisi

Masalah upload sering tidak berasal dari Laravel saja. Biasanya ada minimal dua lapis yang perlu dicek:

  • web server seperti Nginx (client_max_body_size)
  • PHP (upload_max_filesize dan post_max_size)

Kalau salah satu terlalu kecil, user tetap akan gagal upload meskipun logic aplikasi sudah benar.

6. Queue, scheduler, dan background jobs jangan dilupakan

Aplikasi bisa tampak normal di permukaan, padahal email tidak terkirim, invoice tidak dibuat, atau job sinkronisasi tidak pernah jalan. Pastikan worker queue dan scheduler memang dijalankan, bukan hanya diasumsikan ada.

7. Siapkan langkah recovery yang sederhana

Deploy yang sehat bukan hanya soal cara naik, tapi juga cara pulih ketika sesuatu gagal. Minimal, tim perlu tahu:

  • cara rebuild container bersih
  • cara restart service
  • cara cek logs utama
  • cara memastikan container lama tidak mengunci nama atau port

Langkah recovery sederhana sering menyelamatkan lebih banyak waktu daripada setup yang terlalu rumit.

Penutup

Deploy Laravel dengan Docker di VPS tidak harus rumit, tapi memang perlu disiplin di detail kecil. Untuk tim kecil, checklist yang jelas lebih berharga daripada arsitektur yang terlalu ambisius. Tujuannya bukan terlihat canggih, tapi membuat produksi lebih tenang.

Lanjut eksplorasi

Kalau artikel ini relevan dengan kebutuhan implementasi atau source code siap pakai, lanjutkan ke katalog produk atau baca artikel teknis lain yang masih berhubungan.

Lihat Produk Cek Order