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.ymldosyası 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.