java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query

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!

kelola env storage laravel docker

✦ Seri Belajar Docker — Artikel 9 dari 10

Kelola File .env dan Storage Laravel
dengan Aman di Docker 🐳

Belajar cara mengelola env storage Laravel Docker dengan benar — supaya data sensitif kamu aman, storage persistent, dan aplikasi bisa jalan mulus di mana saja.

#Docker #Laravel #EnvStorage #BelajarDocker #ZeroToZorro
⏱️
Estimasi Baca
12–15 menit
🎯
Level
Pemula → Menengah
📅
Tahun
2026

Pernah nggak, kamu susah payah membangun aplikasi Laravel di Docker, lalu tiba-tiba data hilang begitu container di-restart? Atau lebih parah — kamu nggak sengaja commit file .env ke GitHub dan semua API key serta password database kamu terekspos ke publik? 😱

Nah, di artikel ke-9 seri Docker from Zero to Zorro ini, kita akan bahas tuntas cara mengelola env storage Laravel Docker dengan aman dan profesional. Kamu akan belajar cara pakai .env yang benar, bikin storage persistent lewat Docker volume, dan memastikan data kamu tidak pernah hilang meski container mati. Let's go! 🚀

💎 Konsep Kunci
"Konfigurasi bukan kode, data bukan container."
Di Docker, prinsip ini sangat penting. File .env adalah konfigurasi (harus di luar image), dan folder storage adalah data (harus persistent via volume). Pahami dua hal ini, dan kamu sudah 80% aman.

🔐 Kenapa File .env Harus Dikelola Khusus di Docker?

Bayangkan .env seperti kunci brankas rumahmu. Kamu nggak akan simpan salinannya di tempat umum kan? Nah, sama dengan Docker — kamu tidak boleh "membakar" isi .env ke dalam Docker image, karena image itu bisa dibagikan, di-push ke registry, atau diakses orang lain.

Masalah umum yang sering terjadi saat mengelola env storage Laravel Docker:

❌ Kesalahan Umum ⚠️ Akibat ✅ Solusi
COPY .env ke dalam image Kredensial bocor ke registry Gunakan env_file di docker-compose
Hardcode ENV di Dockerfile Tidak fleksibel, susah ganti Pakai environment variables
Storage Laravel dalam container Data hilang saat restart Mount volume ke storage/app
Satu .env untuk semua environment Config production masuk development Buat .env.production terpisah
🔥 Fakta Menarik
Menurut laporan GitGuardian 2024, lebih dari 10 juta secret credentials terekspos di GitHub setiap tahunnya — dan salah satu penyebab terbesar adalah file .env yang tidak sengaja di-commit. Pastikan .env selalu ada di .gitignore!

⚙️ Cara Aman Mengatur File .env Laravel di Docker

Untuk mengelola env Laravel di Docker dengan aman, kamu punya dua pilihan utama: menggunakan env_file di docker-compose, atau mengoper environment variables satu per satu. Kita akan pakai pendekatan pertama yang lebih clean dan mudah dikelola.

1
Buat file .env dan .env.example
File .env berisi nilai asli (masuk .gitignore), sedangkan .env.example adalah template kosong yang bisa di-commit ke repo.
📄 .env
APP_NAME="Laravel Docker App"
APP_ENV=local
APP_KEY=base64:YOUR_KEY_HERE
APP_DEBUG=true
APP_URL=http://localhost

# Database
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=secret_password
2
Tambahkan .env ke .gitignore dan .dockerignore
Pastikan file .env tidak ikut masuk ke Git repo maupun Docker image.
📄 .gitignore & .dockerignore
# Jangan commit .env ke repo!
.env
.env.production
.env.staging

# Jangan masukkan ke Docker image
.env*
.git
node_modules
storage/logs
3
Gunakan env_file di docker-compose.yml
Cara paling bersih untuk inject .env ke dalam container adalah via opsi env_file di docker-compose.
📄 docker-compose.yml
version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - .env # ← inject dari file ini
    volumes:
      - ./storage:/var/www/html/storage
      - laravel_storage:/var/www/html/storage/app
    ports:
      - "8000:80"

volumes:
  laravel_storage:
💡 Tips Pro
Kalau kamu punya multiple environment (dev, staging, production), buat file .env.development, .env.production, dan seterusnya. Lalu di docker-compose, referensikan yang sesuai: env_file: .env.production. Clean banget!

💾 Mengelola Storage Laravel agar Persistent dengan Docker Volume

Sekarang kita masuk ke bagian yang sering bikin pemula panik: storage yang hilang saat container di-restart. Ingat analoginya — container Docker itu seperti hotel. Begitu kamu checkout (container stop/remove), semua yang kamu tinggal di kamar hotel itu lenyap. Solusinya? Docker Volume — seperti titip barang di loker hotel yang tetap ada meski kamu ganti kamar.

Folder storage Laravel menyimpan banyak hal penting: uploaded files, logs, cache, session. Semua ini harus tetap ada meski container di-recreate.

1
Pahami Struktur Folder Storage Laravel
Sebelum mount volume, kamu perlu tahu folder mana yang penting untuk di-persist.
storage/
├── app/        # ← File upload user (WAJIB persist)
│   ├── public/   # ← Gambar, dokumen publik
├── framework/ # ← Cache, session, views
│   ├── cache/
│   ├── sessions/
│   └── views/
└── logs/      # ← Log aplikasi (persist untuk debugging)
2
Konfigurasi Volume di docker-compose.yml
Kita akan mount folder storage Laravel ke Docker named volume agar data tetap persistent.
📄 docker-compose.yml (lengkap)
version: '3.8'

services:
  app:
    build: .
    env_file: .env
    volumes:
      # Bind mount untuk development
      - .:/var/www/html
      # Named volume untuk storage persistence
      - laravel_storage:/var/www/html/storage/app
      - laravel_logs:/var/www/html/storage/logs
    ports:
      - "8000:80"

  mysql:
    image: mysql:8.0
    env_file: .env
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  laravel_storage:
  laravel_logs:
  mysql_data:
3
Set Permission Storage yang Benar
Setelah volume di-mount, pastikan Laravel punya akses tulis ke folder storage.
📄 Dockerfile
FROM php:8.2-apache

# ... install dependencies ...

WORKDIR /var/www/html

COPY . .

# Set permission storage (PENTING!)
RUN chown -R www-data:www-data storage bootstrap/cache \
    && chmod -R 775 storage bootstrap/cache

EXPOSE 80
4
Buat Symbolic Link untuk Storage Public
Jalankan perintah ini agar file di storage/app/public bisa diakses via URL.
# Jalankan sekali setelah container up
docker compose exec app php artisan storage:link

# Output yang diharapkan:
# The [public/storage] link has been connected to [storage/app/public].
⚠️ Perhatian Penting
Saat menggunakan bind mount (.:/var/www/html) untuk development, folder storage dari host akan menimpa volume. Untuk production, sebaiknya hanya pakai named volume tanpa bind mount ke seluruh project directory. Ini mencegah konflik permission yang menyebalkan!

🔒 Best Practice Keamanan env Storage Laravel Docker

Sekarang kamu sudah tahu cara kerjanya. Tapi untuk benar-benar aman dalam mengelola env storage Laravel Docker, ada beberapa best practice yang wajib kamu terapkan — terutama saat sudah masuk ke environment production.

⚡ Analisis: Development vs Production
🔵 Development Environment
  • Gunakan bind mount untuk hot-reload kode
  • APP_DEBUG=true boleh diaktifkan
  • Named volume untuk storage/app saja
  • .env boleh lebih longgar (DB lokal)
🟢 Production Environment
  • Tidak ada bind mount — hanya named volume
  • APP_DEBUG=false wajib!
  • Gunakan Docker Secrets atau env manager
  • Password DB harus kompleks dan di-rotate rutin
⚡ Insight Penting
Untuk production yang lebih serius, pertimbangkan menggunakan Docker Secrets (tersedia di Docker Swarm) atau tool external seperti HashiCorp Vault atau AWS Secrets Manager. Keduanya memungkinkan kamu menyimpan secret di luar file .env sama sekali — jauh lebih aman untuk skala enterprise.
Perintah berguna untuk debugging storage dan env:
# Cek environment variables dalam container
docker compose exec app env | grep APP_

# Cek apakah .env sudah ter-inject dengan benar
docker compose exec app php artisan config:show app

# Lihat isi volume storage
docker volume inspect nama_project_laravel_storage

# List semua volume
docker volume ls

# Clear cache setelah update .env
docker compose exec app php artisan config:clear
💡 Tips: Setelah Update .env
Setiap kali kamu mengubah file .env, jalankan docker compose restart app agar perubahan diambil ulang oleh container. Atau lebih elegan: docker compose up -d --force-recreate.
📝 Kesimpulan

Kamu Sekarang Bisa Kelola env Storage Laravel Docker dengan Aman! 🎉

Di artikel ini, kita sudah membahas tuntas cara mengelola env storage Laravel Docker secara aman dan profesional:
  • ✅ Mengapa .env tidak boleh pernah masuk ke dalam Docker image
  • ✅ Cara inject .env ke container via env_file di docker-compose
  • ✅ Menggunakan Docker Volume agar storage Laravel persistent
  • ✅ Set permission yang benar dan membuat symbolic link
  • ✅ Best practice untuk development vs production environment
Di artikel terakhir seri ini — Artikel 10 — kita akan naik level: deploy aplikasi Laravel Docker ke server VPS yang sesungguhnya. Siapkan dirimu untuk momen paling epic di seri ini! 🚀
💬 Diskusi & Pertanyaan
Punya pertanyaan tentang konfigurasi .env atau volume yang bikin pusing? Drop di kolom komentar di bawah! Dan kalau artikel ini membantu, bantu share ke teman-teman yang lagi belajar Docker juga ya — satu share kamu bisa mengubah perjalanan belajar seseorang! 🙏
🏷️ Tags Artikel
#BelajarDocker #ZeroToZorro #envstorageLaravelDocker #DockerVolume #LaravelDocker #DockerSecurity
📚 Daftar Isi Seri
Seri Belajar Docker: Docker from Zero to Zorro
10 artikel lengkap dari nol sampai deploy ke VPS
📖 Lihat Semua Artikel Seri →

jalankan artisan composer migration laravel docker

🐳 SERI BELAJAR DOCKER · ARTIKEL 8 DARI 10

Cara Jalankan Artisan, Composer, dan Migration Laravel di dalam Container

Bingung gimana cara pakai php artisan, composer, dan migration Laravel saat semuanya hidup di dalam Docker container? Tenang — habis baca ini kamu langsung bisa!

#Docker #Laravel #Artisan #Composer #Migration
⏱️
Estimasi Baca
9 Menit
🎯
Level
Pemula–Menengah
📅
Tahun
2026
📦
Seri
Zero to Zorro

Pernah nggak sih, kamu udah susah-susah setup Docker untuk Laravel, terus pas mau jalanin artisan composer migration Laravel Docker malah bingung — "Lah, perintahnya diketik di mana? Di host? Di dalam container? Atau di dimensi lain?" 😅 Kalau pernah, selamat — kamu nggak sendirian. Ini salah satu kebingungan paling umum yang dialami pemula saat pertama kali pindah ke workflow berbasis container.

Bedanya environment Docker dengan development lokal biasa adalah: semua proses, binary, dan dependensi Laravel kamu hidup di dalam container. Jadi kalau kamu ketik php artisan migrate langsung di terminal host, sistem kamu bakal bengong karena PHP-nya ada di dalam container, bukan di laptop kamu. Artikel ini hadir untuk menuntaskan kebingungan itu — tuntas, praktis, dan langsung bisa kamu coba sekarang.

💎 Konsep Kunci
docker exec = Teleport ke Dalam Container

Untuk menjalankan perintah apa pun (artisan, composer, migration) di dalam Docker container Laravel, kamu hanya perlu satu senjata utama: docker exec -it [nama_container] [perintah]. Ini adalah "pintu masuk" ke lingkungan hidup container kamu.

🏠 Analogi: Docker Container Itu Seperti Apartemen Berbeda

Bayangkan kamu tinggal di sebuah gedung apartemen. Setiap unit apartemen punya dapur, kulkas, dan peralatan sendiri-sendiri — nggak bisa pakai punya tetangga. Docker container bekerja persis sama. Container PHP/Laravel kamu punya instalasi PHP, Composer, dan Artisan-nya sendiri. Laptop kamu (host) adalah "lobby" gedung — kamu bisa lihat pintu-pintunya, tapi nggak bisa masak di dapur apartemen orang tanpa masuk dulu.

Perintah docker exec adalah kunci apartemen itu. Begitu kamu exec ke dalam container, semua perintah PHP/Artisan/Composer berjalan di dalam lingkungan container — dengan PHP versi yang tepat, environment variable yang tepat, dan koneksi database yang sudah tersedia.

💡
Tips Penting

Cek nama container Laravel kamu dengan perintah docker ps. Kolom NAMES menunjukkan nama container yang perlu kamu pakai di setiap perintah docker exec. Nama default biasanya diambil dari nama service di docker-compose.yml.

⚡ Cara Jalankan Artisan dan Composer di dalam Docker Container

Ada dua cara utama menjalankan perintah artisan, composer, dan migration Laravel di Docker. Kita bahas keduanya satu per satu beserta contoh perintah lengkap yang langsung bisa kamu praktikkan.

📋 Cara 1: Eksekusi Langsung dari Host (Paling Sering Dipakai)
1
Cek container yang berjalan

Pastikan container Laravel kamu aktif terlebih dahulu.

# Lihat semua container yang aktif
docker ps

# Output contoh:
CONTAINER ID   IMAGE         NAMES
a1b2c3d4e5f6   app-php-fpm   laravel_app
2
Jalankan perintah Artisan

Gunakan docker exec diikuti nama container dan perintah artisan yang ingin dijalankan.

# Format umum
docker exec -it laravel_app php artisan [perintah]

# Contoh: lihat semua perintah artisan
docker exec -it laravel_app php artisan list

# Contoh: generate key aplikasi
docker exec -it laravel_app php artisan key:generate

# Contoh: buat controller baru
docker exec -it laravel_app php artisan make:controller UserController

# Contoh: cache config
docker exec -it laravel_app php artisan config:cache
3
Jalankan Composer di dalam Container

Sama persis polanya — tinggal ganti perintahnya ke composer.

# Install semua dependency Laravel
docker exec -it laravel_app composer install

# Install package baru (contoh: spatie/laravel-permission)
docker exec -it laravel_app composer require spatie/laravel-permission

# Update dependency
docker exec -it laravel_app composer update

# Dump autoload
docker exec -it laravel_app composer dump-autoload
Insight Penting

Flag -it pada perintah docker exec berarti interactive + tty. Ini penting untuk perintah yang butuh input interaktif. Kalau kamu menjalankan perintah non-interaktif (misal dari CI/CD), kamu bisa hilangkan flag ini dan cukup pakai docker exec laravel_app php artisan migrate saja.

📋 Cara 2: Masuk ke Shell Container Dulu (Untuk Sesi Panjang)
1
Masuk ke dalam shell container

Kalau kamu mau jalankan banyak perintah sekaligus, lebih efisien masuk ke shell container dulu.

# Masuk ke shell bash container
docker exec -it laravel_app bash

# Atau pakai sh jika bash tidak tersedia
docker exec -it laravel_app sh

# Setelah masuk, prompt berubah menjadi:
root@a1b2c3d4e5f6:/var/www/html#

# Sekarang kamu bisa langsung ketik:
php artisan key:generate
php artisan make:model Product -m
composer install
composer require laravel/sanctum

🗃️ Menjalankan Artisan Migration Laravel di Docker: Panduan Lengkap

Migration adalah jantung dari manajemen database di Laravel. Di lingkungan Docker, migration berjalan di dalam container PHP yang sudah terkoneksi ke container database (MySQL/PostgreSQL) lewat Docker network. Selama konfigurasi .env kamu benar, migration akan berjalan mulus.

1
Pastikan koneksi database tersetting dengan benar

Di file .env, DB_HOST harus diisi dengan nama service MySQL di docker-compose, bukan localhost.

# Di file .env Laravel
DB_CONNECTION=mysql
DB_HOST=mysql        # ← nama service di docker-compose.yml
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel
DB_PASSWORD=secret
2
Jalankan migration dan perintah database artisan
# Jalankan semua migration
docker exec -it laravel_app php artisan migrate

# Migration + seed data awal
docker exec -it laravel_app php artisan migrate --seed

# Reset dan jalankan ulang semua migration
docker exec -it laravel_app php artisan migrate:fresh

# Reset + seed sekaligus (sering dipakai dev)
docker exec -it laravel_app php artisan migrate:fresh --seed

# Rollback migration terakhir
docker exec -it laravel_app php artisan migrate:rollback

# Lihat status migration
docker exec -it laravel_app php artisan migrate:status
3
Membuat file migration baru
# Buat migration baru untuk tabel products
docker exec -it laravel_app php artisan make:migration create_products_table

# Buat model + migration sekaligus
docker exec -it laravel_app php artisan make:model Product -m

# Buat seeder
docker exec -it laravel_app php artisan make:seeder ProductSeeder
🔥
Fakta Menarik

Perintah php artisan make:model dengan flag -mcrf bisa generate Model + Migration + Controller + Request + Factory dalam satu perintah! Coba: docker exec -it laravel_app php artisan make:model Product -mcrf

🔧 Alternatif: Gunakan docker compose exec untuk artisan composer migration Laravel Docker

Selain docker exec, kamu juga bisa gunakan docker compose exec langsung berdasarkan nama service di docker-compose.yml — tanpa perlu hafal nama container yang panjang.

# Format: docker compose exec [nama_service] [perintah]
# (nama service = yang ada di docker-compose.yml)

docker compose exec app php artisan migrate
docker compose exec app php artisan key:generate
docker compose exec app composer install
docker compose exec app php artisan make:controller ProductController
docker compose exec app php artisan storage:link
🔬 Analysis: Kapan Pakai Yang Mana?
Aspek docker exec docker compose exec
Target Nama container (NAMES dari docker ps) Nama service (dari docker-compose.yml)
Lokasi eksekusi Di mana saja Harus di folder proyek (ada docker-compose.yml)
Kebutuhan compose Tidak perlu docker compose Perlu docker compose CLI
Rekomendasi Ketika container berjalan mandiri ✅ Lebih direkomendasikan untuk proyek Laravel
⚠️
Perhatian

Jangan pernah jalankan php artisan migrate:fresh di lingkungan production! Perintah ini akan menghapus semua tabel dan data lalu membuatnya ulang dari nol. Gunakan hanya di environment development atau staging.

🚀 Tips Workflow: Bikin Alias untuk Artisan dan Composer Docker

Ngetik docker compose exec app php artisan berkali-kali itu capek. Solusinya? Buat alias di terminal kamu!

# Tambahkan ke ~/.bashrc atau ~/.zshrc

# Alias untuk artisan
alias artisan="docker compose exec app php artisan"

# Alias untuk composer
alias dcomposer="docker compose exec app composer"

# Reload shell
source ~/.bashrc

# Sekarang kamu bisa pakai:
artisan migrate
artisan make:controller ProductController
dcomposer install
dcomposer require livewire/livewire
💡
Tips Pro

Kamu juga bisa membuat file Makefile di root proyek Laravel kamu untuk mendefinisikan shortcut perintah Docker. Ini jauh lebih rapi untuk proyek tim karena semua developer pakai perintah yang sama tanpa perlu setup alias di masing-masing mesin.

📚 Bagian dari Seri
Seri Belajar Docker: Docker from Zero to Zorro

10 artikel yang membawa kamu dari nol hingga mahir menggunakan Docker untuk proyek Laravel.

📋 Lihat Daftar Isi Lengkap →
✅ Kesimpulan

Sekarang Kamu Sudah Bisa Pakai artisan composer migration Laravel Docker!

Di artikel ini, kita sudah belajar bahwa menjalankan artisan, composer, dan migration Laravel di Docker tidak sesulit kelihatannya. Kuncinya hanya tiga hal:

  • Gunakan docker exec -it [container] [perintah] untuk eksekusi langsung dari host
  • Atau gunakan docker compose exec [service] [perintah] untuk workflow berbasis compose
  • Pastikan DB_HOST di .env diisi nama service database, bukan localhost

Ini adalah artikel ke-8 dari seri 10 Artikel Belajar Docker: Docker From Zero to Zorro. Selanjutnya, kita akan bahas cara mengelola file .env dan storage Laravel dengan aman di dalam Docker.

💬 Punya pertanyaan atau kesulitan saat menjalankan artisan/composer di container? Tulis di kolom komentar — kita debug bareng! Dan kalau artikel ini membantu, share ke teman-teman yang lagi belajar Laravel + Docker ya! 🚀

🏷️ Tags
#BelajarDocker #ZeroToZorro #artisancomposermigrationLaravelDocker #LaravelDocker #PhpArtisan #Composer #Migration #DockerCompose
Navigasi Artikel
← Artikel Sebelumnya
Artikel 7
Konfigurasi Nginx + PHP-FPM + MySQL untuk Laravel di Docker Compose
Baca artikel →
Artikel Selanjutnya →
Artikel 9
Kelola File .env dan Storage Laravel dengan Aman di Docker

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