A

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.

Artikel terkait