Ana içeriğe geç

Docker Compose

Okunuşu
dakır kımpouz
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/docker-compose

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.yamlyaml
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.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar