Docker profilleri: Senaryo bazlı servisler

2021-07-29 2 dk

Docker kullanırken belirli servislere yalnızca belirli durumlarda ihtiyaç duyuyor olabilirsiniz. Servislerinizi Docker Compose yapısıyla tanımlarken kullanabileceğiniz isteğe bağlı bir özellik olan profiles ayarı, tam olarak bunu yapabilmenize olanak tanıyor.

Nasıl çalışır?

  • Her servise, sıfır veya daha fazla sayıda profil atarsınız.
  • Bir servisin hiç profili yoksa, her zaman başlatılacaktır.
  • Bir servisin profil veya profilleri varsa, yalnızca bu profillerden biri aktif edildiğinde servis çalışır.

Kullanımı

Aşağıdaki örnek docker-compose.yaml dosyasına bakalım.

docker-compose.yaml
version: '3.9'
services:
  frontend:
    image: frontend
    profiles: ['frontend'] # <--- profil tanımlaması

  backend:
    image: backend

  debugger:
    image: my-debugger
    depends_on:
      - db
    profiles: # <--- profil tanımlaması
      - debug

  db:
    image: postgresql

Yukarıda iki servis için profil tanımlaması yapılmış. frontend servisi frontend profiline bağlıyken, debugger servisi debug profiline bağlı.

Diğerlerinin aksine, backend ve db servisleri ise hiçbir profile bağlı değil. Bu yüzden her zaman başlatılacaklar. debugger ve frontend ise yalnızca istediğinizde başlatılacaklar.

Örnekler:

Aşağıdaki komut, varsayılan olarak backend ve db servislerini başlatacak.

$ docker-compose up

Sıradaki komut ise, backend, db ve ek olarak debugger servislerini başlatacak çünkü debug profilini etkinleştirdik:

$ docker-compose --profile debug up

Aşağıdaki komut ise birden fazla profili harekete geçirerek, backend ve db haricinde frontend ve debugger servislerini de başlatacaktır.

$ docker-compose --profile frontend --profile debug up

Bunlara ek olarak, COMPOSE_PROFILES environment değişkeni ile de profilleri belirtebilirsiniz:

$ COMPOSE_PROFILES=frontend,debug docker-compose up
Tarih: 2021-07-29
Kategoriler: geliştirme
Etiketler: docker