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