Docker Compose'ta bağımlılıklar ve sorun giderme

Orta Düzey Docker

Mike Metzger

Data Engineering Consultant

Bağımlılıklar nedir?

  • Bağımlılıklar, kaynakların başlatılma sırasını belirler
  • Kaynaklar (container'lar) diğer kaynaklara ihtiyaç duyabilir
  • Örnek web uygulaması
    • postgresql veritabanı container'ı önce başlamalıdır

Kapsayıcı Bağımlılık Örneği - postgres

Orta Düzey Docker

Bağımlılıklar nedir?

  • Bağımlılıklar, kaynakların sırasını belirler
  • Kaynaklar (container'lar) diğer kaynaklara ihtiyaç duyabilir
  • Örnek web uygulaması
    • postgresql veritabanı container'ı önce başlamalı
    • Ardından python_app

Kapsayıcı Bağımlılık Örneği - python_app

Orta Düzey Docker

Bağımlılıklar nedir?

  • Bağımlılıklar, kaynakların sırasını belirler
  • Kaynaklar (container'lar) diğer kaynaklara ihtiyaç duyabilir
  • Örnek web uygulaması
    • postgresql veritabanı container'ı önce başlamalı
    • Ardından python_app
    • Son olarak nginx web sunucusu

Kapsayıcı Bağımlılık Örneği - Tam

Orta Düzey Docker

depends_on

  • Bağımlılıklar depends_on özniteliğiyle tanımlanır
  • Örnekteki gibi zincirleme bağımlılık kurulabilir
  • Gerekirse bir kaynağın birden çok bağımlılığı olabilir
  • compose.yaml dosyasındaki sıralama önemli değildir
services:
  postgresql:
    image: postgresql:latest

python_app: image: custom_app depends_on: - postgresql
nginx: image: nginx/latest depends_on: - python_app
Orta Düzey Docker

Uygulamaları kapatma

  • Uygulama kapatma işlemi ters sırada gerçekleşir
  • nginx kaynağı durdurulur

Kapsayıcı Bağımlılık Örneği - Tam

Orta Düzey Docker

Uygulamaları kapatma

  • Uygulama kapatma işlemi ters sırada gerçekleşir
  • nginx kaynağı durdurulur
  • Ardından python_app kaynağı durdurulur

Kapsayıcı Bağımlılık Örneği - python_app

Orta Düzey Docker

Uygulamaları kapatma

  • Uygulama kapatma işlemi ters sırada gerçekleşir
  • nginx kaynağı durdurulur
  • Ardından python_app kaynağı durdurulur
  • Son olarak postgresql kaynağı durdurulur

Kapsayıcı Bağımlılık Örneği - postgres

Orta Düzey Docker

Diğer seçenekler

  • Docker Compose bağımlılıklar için diğer seçenekler sunar
  • condition: kaynağın ne zaman hazır sayılacağını belirtir
    • service_started - Kaynak normal şekilde başlatıldı
      • Varsayılan davranış
    • service_completed_successfully - Kaynak bir ilk yapılandırma vb. gibi başarıyla tamamlandı
    • service_healthy - Kaynak healthcheck ile tanımlanan ölçütleri karşılar
services:
  nginx:
    image: nginx/latest
    depends_on:
      python_app:
        condition: service_started

python_app: image: custom_app depends_on: postgresql: condition: service_healthy
Orta Düzey Docker

Docker Compose sorun giderme araçları

  • Docker Compose ek sorun giderme araçları sağlar
  • docker compose logs - Uygulamadaki tüm kaynaklardan çıktıları toplar
    redis-1  | * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    redis-1  | * Running mode=standalone, port=6379.
    redis-1  | * Server initialized
    redis-1  | * Ready to accept connections tcp
    web-1    | * Serving Flask app 'app.py'
    web-1    |  * Running on all addresses (0.0.0.0)
    web-1    |  * Running on http://172.20.0.2:5000
    web-1    | Press CTRL+C to quit
    
  • docker compose logs <resourcename>
Orta Düzey Docker

docker compose top

  • docker compose top uygulamadaki kaynakların durumunu gösterir
composetest-redis-1
UID   PID    PPID   C    STIME   TTY   TIME       CMD
999   2767   2726   0    01:16   ?     00:03:27   redis-server *:6379

composetest-web-1
UID    PID    PPID   C    STIME   TTY   TIME       CMD
root   2768   2740   0    01:16   ?     00:00:23   /usr/local/bin/python /usr/local/bin/flask run
Orta Düzey Docker

Haydi pratik yapalım!

Orta Düzey Docker

Preparing Video For Download...