Docker Compose ile Multi-Container Uygulamaları Geliştirmek
Docker Compose, birden fazla konteyneri tek bir komutla başlatıp yönetmenin yoludur. Veritabanı, web sunucusu, cache gibi servisleri aynı ağda çalıştırmak yerine her birini elle başlatmak yerine, tüm yapılandırmayı bir YAML dosyasına yazıp çalıştırırsın.
Geliştirme ortamında PostgreSQL, Redis, Node.js uygulaması çalıştırmanız gerekiyor. Her birini ayrı kurarsanız, yeni bir geliştirici projeyi klonladığında kurulum saatler alır. Compose ile tüm bu adımlar tek bir `docker-compose up` komutuyla otomatik hale gelir.
Docker Compose, YAML formatında bir yapılandırma dosyası kullanır. Her servis, görüntüsü, portları, ortam değişkenleri ve bağlantıları bu dosyada tanımlanır.
Basit bir örnek: web uygulaması + PostgreSQL veritabanı.
1version: '3.8'23services:4web:5image: node:186container_name: app_web7ports:8- "3000:3000"9environment:10- DATABASE_URL=postgresql://user:password@db:5432/myapp11depends_on:12- db13volumes:14-./app:/app15working_dir: /app16command: npm start1718db:19image: postgres:1520container_name: app_db21environment:22- POSTGRES_USER=user23- POSTGRES_PASSWORD=password24- POSTGRES_DB=myapp25ports:26- "5432:5432"27volumes:28- postgres_data:/var/lib/postgresql/data2930volumes:31postgres_data:1. Dosyayı hazırla: Proje klasöründe `docker-compose.yml` oluştur ve yukarıdaki içeriği yapıştır.
2. Konteynerları başlat:
1docker-compose up -d`-d` bayrağı arka planda çalışır. Çıktı:
1Creating app_db... done2Creating app_web... done3. Durum kontrol et:
1docker-compose psÇıktı:
1NAME COMMAND STATE PORTS2app_db postgres Up 2 min 5432/tcp3app_web npm start Up 1 min 0.0.0.0:3000->3000/tcp4. Logları izle:
1docker-compose logs -f web2[/cod]34**5. Durdur ve sil:**56[kod]7docker-compose down- `depends_on` sayesinde `db` servisi önce başlar, `web` bağlantı kurmaya hazır olur.
- `volumes` ile veritabanı verileri kalıcı hale gelir; konteyner silinse veri kalır.
- `environment` ile şifreler ve bağlantı dizelerini tanımlarsın.
- Birden fazla dosya varsa `docker-compose -f docker-compose.yml -f docker-compose.prod.yml up` ile override edebilirsin.
Docker Compose, geliştirme ve test ortamlarında standart haline geldi. Bir kez YAML yazıp, herkes aynı ortamda çalışır.
0 yorum