CodeBlanks Logo Icon CodeBlanks

Volume ve network

Volume ve network tanımlarını compose dosyasına eklersin.

Volume ve network

Varsayılan olarak Compose tüm servisleri tek bir proje_default ağına koyar. Katmanları ayırmak için özel ağlar tanımlanır: yalnızca API hem dış hem iç ağdadır; veritabanı dışarıdan erişilemeyen bir ağda kalır:

services:
  web:
    image: nginx:alpine
    networks: [on]
  api:
    build: .
    networks: [on, arka]
  db:
    image: postgres:16
    networks: [arka]

networks:
  on:
  arka:
    internal: true      # dışarıya çıkışı da yok

Bind mount ve salt okunur ayar

Servislere ayar dosyası bağlamak için kısa sözdiziminde göreli yol kullanılır; yol compose dosyasının klasörüne göredir:

  web:
    image: nginx:alpine
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - statik:/usr/share/nginx/html

volumes:
  statik:

docker compose down volume'leri silmez; down -v onları da siler (veri kaybı!).

Uygulama Katmanlı ağlar

Bir compose.yaml yaz: api servisi build: . ile oluşsun ve on ile arka ağlarında olsun; db servisi postgres:16 image'ını kullansın ve yalnızca arka ağında olsun. Üst düzey networks: altında on: ve internal: true olan arka: ağlarını tanımla.

Başlangıç kodu

terminal
# compose.yaml
# buraya yaz

Örnek çözüm

terminal
# compose.yaml
services:
  api:
    build: .
    networks:
      - on
      - arka
  db:
    image: postgres:16
    networks:
      - arka

networks:
  on:
  arka:
    internal: true

Beklenen çıktı

[+] Running 4/4
 ✔ Network proje_on  Created
 ✔ Network proje_arka  Created
 ✔ Container proje-db-1  Started
 ✔ Container proje-api-1  Started

Soru ve cevaplar

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

1 Yukarıdaki dosyada web servisi db servisine erişebilir mi?

  • Evet, her zaman
  • Yalnızca port yayınlanırsa
  • Yalnızca IP ile
  • Hayır, ortak bir ağları yok Doğru cevap

Açıklama: Container'lar yalnızca ortak oldukları ağlar üzerinden konuşur.

2 Ağı dış dünyaya kapat.

Soru
networks:
  arka:
    ____: true
Cevap
networks:
  arka:
    internal: true

Açıklama: internal ağdaki container'lar dışarıya çıkamaz.

3 Eşleştir.

Kavram Anlamı
proje_default Varsayılan ağ
internal: true Dışarıya kapalı ağ
./nginx.conf:...:ro Salt okunur ayar
down -v Volume'leri de siler

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