Dependensi dan pemecahan masalah di Docker Compose

Docker Tingkat Menengah

Mike Metzger

Data Engineering Consultant

Apa itu dependensi?

  • Dependensi menentukan urutan start resource
  • Resource (container) bisa bergantung pada resource lain
  • Contoh aplikasi web
    • Kontainer database postgresql harus mulai dulu

Contoh Dependensi Kontainer - postgres

Docker Tingkat Menengah

Apa itu dependensi?

  • Dependensi menentukan urutan resource
  • Resource (container) bisa memerlukan resource lain
  • Contoh aplikasi web
    • Kontainer database postgresql harus mulai dulu
    • Lalu python_app

Contoh Dependensi Kontainer - python_app

Docker Tingkat Menengah

Apa itu dependensi?

  • Dependensi menentukan urutan resource
  • Resource (container) bisa memerlukan resource lain
  • Contoh aplikasi web
    • Kontainer database postgresql harus mulai dulu
    • Lalu python_app
    • Terakhir, server web nginx

Contoh Dependensi Kontainer - Lengkap

Docker Tingkat Menengah

depends_on

  • Dependensi ditentukan dengan atribut depends_on
  • Dapat merantai dependensi seperti contoh
  • Atau punya banyak dependensi per resource jika perlu
  • Urutan file compose.yaml tidak berpengaruh
services:
  postgresql:
    image: postgresql:latest

python_app: image: custom_app depends_on: - postgresql
nginx: image: nginx/latest depends_on: - python_app
Docker Tingkat Menengah

Mematikan aplikasi

  • Mematikan aplikasi terjadi dalam urutan terbalik
  • Menghentikan resource nginx

Contoh Dependensi Kontainer - Lengkap

Docker Tingkat Menengah

Mematikan aplikasi

  • Mematikan aplikasi terjadi dalam urutan terbalik
  • Menghentikan resource nginx
  • Lalu menghentikan resource python_app

Contoh Dependensi Kontainer - python_app

Docker Tingkat Menengah

Mematikan aplikasi

  • Mematikan aplikasi terjadi dalam urutan terbalik
  • Menghentikan resource nginx
  • Lalu menghentikan resource python_app
  • Dan terakhir resource postgresql

Contoh Dependensi Kontainer - postgres

Docker Tingkat Menengah

Opsi lainnya

  • Docker Compose menyediakan opsi dependensi lain
  • condition: menentukan kapan resource siap
    • service_started - Resource mulai normal
      • Perilaku default
    • service_completed_successfully - Resource selesai berjalan, mis. konfigurasi awal, dll.
    • service_healthy - Resource memenuhi kriteria healthcheck
services:
  nginx:
    image: nginx/latest
    depends_on:
      python_app:
        condition: service_started

python_app: image: custom_app depends_on: postgresql: condition: service_healthy
Docker Tingkat Menengah

Alat pemecahan masalah Docker Compose

  • Docker Compose memiliki alat pemecahan masalah tambahan
  • docker compose logs - Mengumpulkan output dari semua resource di aplikasi
    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>
Docker Tingkat Menengah

docker compose top

  • docker compose top menampilkan status resource dalam aplikasi
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
Docker Tingkat Menengah

Ayo berlatih!

Docker Tingkat Menengah

Preparing Video For Download...