CodeBlanks Logo Icon CodeBlanks

Veritabanı service'i

Veritabanı service'ini compose dosyasına eklersin.

Veritabanı servisi

Veritabanı servisi hazır bir image kullanır, ortam değişkenleriyle ayarlanır ve verisini adlandırılmış bir volume'de tutar. Volume'ün dosyanın sonunda volumes: altında da bildirilmesi gerekir:

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: gizli
      POSTGRES_DB: app
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Bağımlılık ve sağlık kontrolü

depends_on başlatma sırasını belirler. Ama veritabanı container'ının başlaması bağlantı kabul etmeye hazır olduğu anlamına gelmez; healthcheck ve condition: service_healthy ile API veritabanı gerçekten hazır olunca başlar:

  db:
    image: postgres:16
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "app"]
      interval: 5s
      retries: 5
  api:
    build: .
    depends_on:
      db:
        condition: service_healthy

Uygulama Veritabanını ekle

compose.yaml'a db servisini yaz: image postgres:16; environment altında POSTGRES_PASSWORD: gizli; pgdata volume'ü /var/lib/postgresql/data'ya bağlı. Dosyanın sonuna üst düzey volumes: altında pgdata: bildirimini ekle.

Başlangıç kodu

terminal
# compose.yaml
services:
# buraya yaz

Örnek çözüm

terminal
# compose.yaml
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: gizli
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Beklenen çıktı

[+] Running 2/2
 ✔ Volume "proje_pgdata"  Created
 ✔ Container proje-db-1  Started

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 API servisi veritabanına hangi adresle bağlanır?

  • Servis adıyla: db:5432 Doğru cevap
  • localhost:5432
  • Ana makinenin IP'siyle
  • Port yayınlanmadan bağlanamaz

Açıklama: Compose servisleri ortak bir ağa koyar; servis adı DNS adıdır.

2 API'yi veritabanı sağlıklı olunca başlat.

Soru
    depends_on:
      db:
        condition: ____
Cevap
    depends_on:
      db:
        condition: service_healthy

Açıklama: service_started yalnızca başlamayı bekler.

3 Eşleştir.

Kavram Anlamı
depends_on Başlatma sırası
healthcheck Hazır mı testi
pg_isready PostgreSQL hazır komutu
db:5432 Servis adıyla adres

Başlangıç bölümündeki tüm dersler