Docker Compose Nedir?
Docker Compose, Docker imagelerini ve containerlarını yönetmek ve çalıştırmak için kullanılan bir araçtır. Birden fazla servisi, ağları ve depolama birimlerini tek bir yapılandırma dosyasında tanımlamanıza olanak tanır.
Docker Compose dosyası (docker-compose.yml) sayesinde uygulamalarınızın birden fazla container’ını aynı anda başlatmak, durdurmak ve ölçeklendirmek kolaylaşır. Bu, geliştirme, test ve üretim ortamlarında uygulamalarınızın verimli bir şekilde çalışmasını sağlar.
Docker Compose dosyası (docker-compose.yml) Docker container’ını ve servislerini tanımlayan bir YAML formatına sahiptir. Docker Compose dosyasında, servislerin kullanacağı imagesler, bağımlılıklar, network, bağlantılar, yapılandırmalar ve diğer özellikler belirtilir.
version: '3'
services:
web:
image: mert_web_app:latest
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.1
environment:
MYSQL_ROOT_PASSWORD: mertsecret
MYSQL_DATABASE: mertdb
Yukarıdaki örnek, “web” adında bir servis ve “db” adında bir veritabanı servisi tanımlar.
“web” servisi, “mert_web_app” adlı Docker image’inin kullanır ve 8080 portunu 80 portuna bağlar.
“db” servisi ise resmi MySQL 8.1 image’inin kullanarak MySQL veritabanını başlatır ve gerekli ortam değişkenlerini ayarlar.
Docker Compose Özellikleri ve Avantajları
- Basit
Docker Compose dosyası, servisleri ve bağımlılıkları tek bir dosyada tanımlar. Bu sayede uygulamalarınızın yapılandırması basit olur.
- Multi Container Yönetimi
Docker Compose, birden fazla container’ı tek bir yapılandırma dosyasıyla yönetmenizi sağlar. Tüm konteynerleri aynı anda başlatmak, durdurmak ve ölçeklendirmek kolaylaşır.
- Ağlar ve Bağlantılar
Docker Compose, containerlar arasındaki networkleri ve bağlantıları tanımlamak için kullanılır. Bu sayede containerlar arasında iletişim kurabilir ve bağlantılar oluşturabilirsiniz.
Docker Compose Komutları
- docker-compose up
Docker Compose dosyasındaki servisleri başlatmak için kullanılır. Eğer “docker-compose.yml” dosyası bulunuyorsa, bu komutu çalıştırmak Docker Compose dosyasındaki servisleri ve bağlı ağları başlatacaktır.
Eğer dosya “docker-compose.yml” yerine farklı bir isimde ise, -f veya — file parametresi ile dosyanın adı belirtilmelidir.
docker-compose up
- docker-compose up -d
Servisleri arka planda başlatmak için kullanılır. Servisler çalışırken çıktıları görmek istemezseniz bu komutu kullanabilirsiniz.
docker-compose up -d
- docker-compose down
Docker Compose dosyasındaki servisleri ve bağlı ağları durdurmak ve kaldırmak için kullanılır.
docker-compose down
- docker-compose ps
Docker Compose dosyasındaki servislerin durumunu ve bilgilerini görüntülemek için kullanılır.
docker-compose ps
- docker-compose logs
Servislerin günlük (log) çıktılarını görüntülemek için kullanılır.
Tüm servislerin loglarını görmek için parametre olarak — follow veya kısa hali -f kullanılabilir.
docker-compose logs
docker-compose logs -f
- docker-compose build
Docker Compose dosyasında tanımlanan servislerin imagelerini oluşturmak için kullanılır. Eğer imageler daha önceden oluşturulmuşsa, bu komut imageleri yeniden oluşturacaktır.
docker-compose build
- docker-compose start
Docker Compose dosyasındaki servisleri başlatmak için kullanılır. Eğer servisler daha önceden çalıştırıldıysa, bu komut onları tekrar başlatmaz.
docker-compose start
- docker-compose stop
Docker Compose dosyasındaki servisleri durdurmak için kullanılır.
docker-compose stop
- docker-compose restart
Docker Compose dosyasındaki servisleri yeniden başlatmak için kullanılır.
docker-compose restart
- docker-compose exec
Docker Compose dosyasındaki servisler içinde bir komutu çalıştırmak için kullanılır. Örneğin, bir “web” sunucusu içindeki bash kabuğunu çalıştırmak için:
docker-compose exec web bash
- docker-compose down —
Docker Compose dosyasındaki servisleri ve ağları kaldırmak için kullanılır. Ayrıca, bağlı olan tüm veri depolama birimlerini de (volumes) kaldırır.
docker-compose down --volumes
- docker-compose config
Docker Compose dosyasının geçerli yapılandırmasını kontrol etmek için kullanılır. Yapılandırma geçerli ise, Docker Compose dosyasında herhangi bir hata olmadığını gösterir.
docker-compose config