Sobes.tech
Junior

Docker Compose ile ilgili deneyiminiz nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Çok konteynerli uygulamaları tanımlamak ve çalıştırmak için Docker Compose kullanıyorum. Deneyimim şunları içerir:

  • Yerel ortam geliştirme: Tüm gerekli servisleri (backend, frontend, veritabanı, önbellek) çalıştırmak için docker-compose.yml dosyası oluşturmak. Bu, ana sistemden izole edilmiş hızlı bir ortam kurmayı sağlar.
  • Test etme: Docker Compose kullanarak farklı yapılandırmalara sahip test ortamları oluşturmak.
  • Staging/Üretim ortamına dağıtım: Üretim için genellikle daha güçlü orkestratörler (Kubernetes gibi) kullanılsa da, erken aşamalarda veya küçük projelerde Docker Compose, staging sunucularına dağıtım için kullanılmıştır.

docker-compose.yml içindeki alanların kullanımı örnekleri:

  • services: Bir dizi konteyner tanımlaması.
  • image: Kullanılan Docker imajını belirtir.
  • build: Dockerfile'dan imaj oluşturma.
  • ports: Port eşleştirmeleri.
  • volumes: Veri saklama veya kaynak kodu bağlama için hacimlerin montajı.
  • networks: Özel ağların tanımlanması.
  • depends_on: Servisler arasındaki bağımlılıkların kurulması.
  • environment: Konteynerlere ortam değişkenleri iletmek.

Basit bir web uygulaması ve veritabanı için yapılandırma örneği:

services:
  webapp:
    build: ./webapp # webapp dizinindeki Dockerfile'dan inşa
    ports:
      - "80:80" # ana makinenin 80 portunu konteynerin 80 portuna eşleştir
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # ortam değişkeni
    depends_on:
      - db # web uygulaması veritabanına bağlı

  db:
    image: postgres:13 # PostgreSQL imajını kullan
    volumes:
      - db_data:/var/lib/postgresql/data # verilerin saklanması
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

volumes:
  db_data: # isimlendirilmiş hacim tanımı

Tipik komutlar:

docker compose up -d # servisleri arka planda başlat
docker compose down # servisleri durdur ve sil
docker compose build # imajları oluştur
docker compose logs <service_name> # belirli bir servisin loglarını görüntüle
docker compose exec <service_name> <komut> # konteyner içinde komut çalıştır

Compose sözdizimi sürümleri ve farklarını biliyorum. .env dosyalarını ortam değişkenlerini yönetmek için nasıl kullanacağımı ve farklı servis setlerini başlatmak için profilleri nasıl uygulayacağımı anlıyorum.