## Docker Compose Nedir?
Docker Compose, birden fazla Docker konteynerini yönetmek için kullanılan güçlü bir araçtır. Birden fazla hizmetin (service) birbirleriyle uyumlu bir şekilde çalışmasını sağlayarak, karmaşık uygulama altyapılarının kurulumunu ve yönetimini basitleştirir. Örneğin, bir uygulama veritabanı, web sunucusu ve arka uç hizmetleri gibi farklı bileşenlere sahip olabilir. Docker Compose sayesinde, bu hizmetlerin her birini ayrı ayrı çalıştırmak yerine, tek bir yapılandırma dosyasından tüm hizmetlerinizi başlatabilirsiniz.
## Docker Compose Kurulumu
İlk adım olarak, Docker Compose’u sistemimize kurmamız gerekiyor. Linux üzerinde Docker Compose kurmak oldukça basittir. Terminali açıp aşağıdaki komutları takip edebilirsiniz:
sudo apt-get update
sudo apt-get install docker-compose
Kurulumdan sonra, Docker Compose’un doğru şekilde yüklendiğinden emin olmak için şu komutu kullanabilirsiniz:
docker-compose --version
Bu komut, Docker Compose sürümünü göstererek kurulumun başarılı olduğunu doğrular.
## Docker Compose Yapılandırma Dosyası (docker-compose.yml)
Docker Compose, her bir konteynerin nasıl çalışması gerektiğini tanımladığınız bir yapılandırma dosyasına dayanır. Bu dosya genellikle docker-compose.yml olarak adlandırılır. Bu dosya içinde konteynerlerinizi, ağ yapılarını, hacimleri ve çevresel değişkenleri belirtebilirsiniz.
Aşağıda basit bir docker-compose.yml örneği bulabilirsiniz. Bu örnekte, bir web uygulaması için bir nginx ve bir mysql veritabanı konteyneri çalıştırılmaktadır.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
Burada, iki farklı hizmet tanımlanmıştır:
1. web: Nginx web sunucusu, 8080 portunu 80 portuna yönlendirerek çalışacak.
2. db: MySQL veritabanı, root kullanıcısı için bir parola belirlenmiş.
Bu basit yapılandırma ile, web sunucusu ve veritabanı konteynerleri birlikte çalışmaya hazır hale gelir.
## Docker Compose ile Hizmetleri Başlatmak
Docker Compose dosyanızı oluşturduktan sonra, tüm hizmetleri tek bir komutla başlatabilirsiniz. Terminalde, docker-compose.yml dosyanızın bulunduğu dizine gidin ve şu komutu çalıştırın:
docker-compose up
Bu komut, belirtilen tüm konteynerleri başlatır ve çıktıları terminalde gösterir. Eğer arka planda çalışmasını istiyorsanız, aşağıdaki komutu kullanabilirsiniz:
docker-compose up -d
Bu komut, konteynerleri arka planda başlatır ve terminali tekrar kullanmanıza olanak tanır.
## Docker Compose ile Konteyner Durumunu Kontrol Etmek
Çalışan konteynerlerin durumunu görmek için şu komutu kullanabilirsiniz:
docker-compose ps
Bu komut, çalışmakta olan konteynerler hakkında bilgi verir.
## Docker Compose ile Hizmetleri Durdurmak ve Temizlemek
Konteynerlerinizi durdurmak ve kaldırmak için şu komutu kullanabilirsiniz:
docker-compose down
Bu komut, tüm hizmetleri durdurur ve ilgili konteynerleri temizler.
## Docker Compose ile Volümler ve Ağaç Yapıları Kullanmak
Karmaşık uygulamalarla çalışırken, verilerinizi saklamak ve konteynerler arası iletişimi sağlamak için Docker Compose’un sunduğu volümler ve ağaç yapıları çok yararlıdır. Volümler, konteynerlerin veri kaybı olmadan yeniden başlatılmasına olanak tanır. Ayrıca, konteynerler arası ağ yapısını belirleyerek, bir konteynerin diğerine erişmesini sağlayabilirsiniz.
Örneğin, bir veritabanı volümü eklemek için şu şekilde bir yapılandırma kullanabilirsiniz:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
db-data:
Bu şekilde, veritabanınızın verilerini db-data isminde bir volume ile kalıcı hale getirebilirsiniz.
## Sonuç
Docker Compose, konteyner yönetimini büyük ölçüde basitleştiren ve geliştiricilerin işini kolaylaştıran bir araçtır. Artık tek bir komutla çoklu hizmetleri başlatabilir, durdurabilir ve yönetebilirsiniz. Bu yazıda Docker Compose’un temel kullanımını ve bazı pratik ipuçlarını ele aldık. Kendi projelerinizde Docker Compose’u kullanarak zaman kazandırabilir ve uygulama altyapınızı daha verimli hale getirebilirsiniz.
Unutmayın, Docker Compose her geçen gün daha fazla gelişiyor ve Docker ekosisteminin vazgeçilmez bir parçası haline geliyor. Hadi, hemen Docker Compose’u projelerinize dahil edin ve konteyner dünyasına adım atın!