# Docker Compose

Adres: https://softwaredictionary.org/tr/terimler/docker-compose
Kategori: DevOps ve Bulut
Son güncelleme: 2026-10-03
Okunuşu: dakır kımpouz

Kısaca: Docker Compose, web sunucusu ve veritabanı gibi birkaç container'dan oluşan uygulamaları tek bir YAML dosyası ve tek komutla tanımlayıp çalıştıran araçtır.

## Docker Compose nedir?

Gerçek bir uygulama nadiren tek bir container'da çalışır. Tipik bir kurulum, uygulamanın kendisine, bir PostgreSQL veritabanına, bir Redis önbelleğine ve belki bir arka plan işçisine ihtiyaç duyar; her birinin portları, ortam değişkenleri ve depolaması vardır. Compose hepsini bir `compose.yaml` dosyasında tarif eder; `docker compose up` de bütün yığını başlatır ve container'lar ortak bir ağ üzerinde birbirine servis adıyla ulaşabilir.

Her servis çekilecek bir imajı ya da derlenecek bir klasörü belirtir; portları, ortam değişkenlerini, yeniden başlatmalardan sonra kalması gereken veriler için volume'ları, sağlık kontrollerini ve diğer servislere bağımlılıkları tanımlayabilir. `docker compose down` her şeyi durdurup kaldırır, `logs` birleşik çıktıyı gösterir, `exec` de çalışan bir serviste bir kabuk açar.

Compose çoğunlukla yerel geliştirme ve test için kullanılır: yeni bir geliştirici depoyu klonlar, tek bir komut çalıştırır ve herkesle aynı veritabanı sürümlerine ve ayarlarına sahip olur. Küçük, tek sunuculu dağıtımlarda ve CI hatlarında entegrasyon testlerinin ihtiyaç duyduğu bağımlılıkları başlatmak için de kullanılır.

Sık yapılan bir yanlış, Compose'un Kubernetes'in yerini aldığını düşünmektir. Compose container'ları tek bir makinede çalıştırır; bir küme genelinde zamanlama, kendi kendini iyileştirme ya da düğümler arasında kademeli güncelleme gibi yerleşik özellikleri yoktur. Birçok sunucuya yayılan production sistemleri için Kubernetes gibi bir orkestratör ya da yönetilen bir container servisi olağan seçimdir.

## Önemli noktalar

- Docker Compose, çok container'lı uygulamaları tek bir YAML dosyasından çalıştırır.
- docker compose up her servisi ortak bir ağ üzerinde başlatır.
- Servisler imajları, portları, ortam değişkenlerini, volume'ları ve sağlık kontrollerini tanımlar.
- Yerel geliştirme, test ve küçük tek sunuculu kurulumlar için idealdir.
- Tek bir makinede çalışır; kümeleri Kubernetes orkestre eder.

## Örnek: Veritabanı ve önbelleği olan bir uygulama için compose.yaml

```yaml
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://app:secret@db:5432/app   # "db" is the service name
      REDIS_URL: redis://cache:6379
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:17
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret
    volumes:
      - db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "app"]

  cache:
    image: redis:8

volumes:
  db-data:

# docker compose up -d     start everything in the background
# docker compose down      stop and remove the containers
```

## Sık sorulan sorular

**Docker ile Docker Compose arasındaki fark nedir?**

Docker tek tek container'ları derler ve çalıştırır. Docker Compose bunun üzerinde durur ve bir YAML dosyasında birlikte tanımlanan, tek bir uygulamayı oluşturan bir container grubunu çalıştırır.

**Docker Compose'u production'da kullanmalı mıyım?**

Tek sunucudaki küçük uygulamalar için iyi çalışabilir. Birkaç sunucu, otomatik yedeğe geçiş ya da kesintisiz kademeli güncellemeler gereken sistemler için Kubernetes ya da yönetilen bir container platformu daha uygundur.

**docker-compose ile docker compose arasındaki fark nedir?**

Tireli docker-compose, ilk bağımsız araçtır. Boşluklu docker compose ise Docker komut satırına eklenti olarak yerleştirilmiş daha yeni sürümdür ve bugün kullanılması gereken odur. İkisi de aynı dosya biçimini okur.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
