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.
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