Docker Compose untuk Laravel di Produksi
Struktur Docker Compose yang rapi untuk Laravel, PostgreSQL, Redis, Nginx, dan queue worker — siap produksi.
1 menit bacaAhmad Apandi
Mengapa Docker Compose?
Untuk banyak sistem pemerintahan dan SME, Kubernetes sering berlebihan. Docker Compose + VPS yang di-harden sudah cukup andal jika dirancang dengan benar.
Struktur layanan
services:
app:
build:
context: .
target: production
env_file: .env
depends_on:
- db
- redis
queue:
build:
context: .
target: production
command: php artisan queue:work --sleep=1 --tries=3
depends_on:
- app
nginx:
image: nginx:1.27-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./docker/nginx:/etc/nginx/conf.d:ro
db:
image: postgres:16-alpine
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
Prinsip penting
- Multi-stage build agar image kecil
- Non-root user di container app
- Healthcheck untuk restart otomatis
- Secrets tidak di-commit ke Git
- Volume hanya untuk data persisten
Reverse proxy
Nginx (atau Traefik) menangani TLS, gzip, dan rate limit di depan PHP-FPM / FrankenPHP.
Penutup
Compose bukan hanya untuk development. Dengan disiplin konfigurasi, ini bisa menjadi fondasi deployment yang stabil.