Rehber

Bir VPS üzerinde üretim amaçlı Docker Compose yığını

Orta seviye25 dk okumaGüncellendi 27 Haziran 2026
Kısa cevap

Çalışabilir bir üretim yığını, otomatik TLS için Caddy, uygulamanız, PostgreSQL ve Redis'ten oluşur ve tek bir Compose dosyasında adlandırılmış birimler ve sağlık kontrolleri ile tanımlanır. 8 GB RAM ve NVMe ile bu, önemli trafiği kaldırır ve her dağıtımdan önceki anlık görüntü, geri almayı iki dakikalık bir işlem haline getirir.

01 Docker'ı resmi depodan kurun

Distribution packages lag significantly. The convenience script is fine on a fresh instance.

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

02 Compose dosyasını yazın

Caddy obtains and renews certificates automatically, which removes the single most common source of production breakage.

services:
  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    ports: ["80:80", "443:443", "443:443/udp"]
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
  app:
    build: .
    restart: unless-stopped
    depends_on: { db: { condition: service_healthy } }
    environment:
      DATABASE_URL: postgres://app:${DB_PASS}@db:5432/app
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: ${DB_PASS}
    volumes: [pgdata:/var/lib/postgresql/data]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 10s
volumes: { caddy_data: {}, pgdata: {} }

03 Caddy'yi yapılandırın

Three lines is a complete TLS-terminating reverse proxy with automatic certificate renewal.

app.example.com {
  encode zstd gzip
  reverse_proxy app:8000
}

04 Veritabanını yedekleyin, kapsayıcıyı değil

A file copy of a running Postgres data directory produces a corrupt backup that appears to succeed. Dump it properly.

docker compose exec -T db pg_dump -U app app | zstd > /backups/app-$(date +%F).sql.zst

05 Her dağıtımdan önce anlık görüntü alın

Free, instant, and it converts a failed deployment from an incident into a rollback.

Sık sorulan sorular

Bu ne kadar RAM gerektiriyor?

Kapsayıcı bellek sınırlarını toplayın ve ana bilgisayar için yaklaşık 1 GB ekleyin. Bu yığın 8 GB'da rahatça çalışır.

Bunun yerine Docker Swarm mı yoksa Kubernetes mi kullanmalıyım?

Tek bir sunucu için değil. Gerçekten birden fazla düğümünüz olana kadar Compose doğru araçtır.