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'
2
3services:
4web:
5image: node:18
6container_name: app_web
7ports:
8- "3000:3000"
9environment:
10- DATABASE_URL=postgresql://user:password@db:5432/myapp
11depends_on:
12- db
13volumes:
14-./app:/app
15working_dir: /app
16command: npm start
17
18db:
19image: postgres:15
20container_name: app_db
21environment:
22- POSTGRES_USER=user
23- POSTGRES_PASSWORD=password
24- POSTGRES_DB=myapp
25ports:
26- "5432:5432"
27volumes:
28- postgres_data:/var/lib/postgresql/data
29
30volumes:
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:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1docker-compose up -d

`-d` bayrağı arka planda çalışır. Çıktı:

1Creating app_db... done
2Creating app_web... done

3. Durum kontrol et:

1docker-compose ps

Çıktı:

1NAME COMMAND STATE PORTS
2app_db postgres Up 2 min 5432/tcp
3app_web npm start Up 1 min 0.0.0.0:3000->3000/tcp

4. Logları izle:

1docker-compose logs -f web
2[/cod]
3
4**5. Durdur ve sil:**
5
6[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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz