Veritabanı service'i
- Docker & Kubernetes kursu
- Başlangıç
- Ders 63/82
- 4 dk
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_healthyUygulama 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
# compose.yaml
services:
# buraya yazÖrnek çözüm
# 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.
depends_on:
db:
condition: ____
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 |