Image for post
Image for post

Merhaba arkadaşlar,

Bu makalemde Docker-Compose ve Docker Stack içerisinde kullandığımız YAML’den bahsedip örnek bir Docker-Compose dosyası oluşturup satır satır inceleyip makaleme son vereceğim.

Önemli Bilgi !!! Tüm docker-compose komutlarını docker-compose.yml ile aynı dizinde çalıştırmanız gereklidir. Komutları dizinin farklı seviyelerinden çalıştıramazsınız.

  • YAML Nedir ?

YAML, hem insan tarafından kolaylıkla okunabilen hem de sayısal olarak kolaylıkla işleme alınabilen ve tüm programlama dilleri tarafından kullanılabilen bir veri değişim formatıdır. YAML’ın açılımı Ain’t Markup Language’dir.

YAML dilinde yazılan veriler birçok programlama dilinde rahatça okunacak şekilde kütüphanelere sahiptir. Anahtar-değer (Key-Value) çiftlerinden oluşur.

Basit bir örnek ile açıklamak gerekirse;

Alışveriş listesini kategoriler şeklinde ifade etmek istersek, meyve ve sebze olmak üzere iki kategoriye ayıralım. Burada alışveriş bir kategori olacak ve içerisinde iki anahtar içerecektir. Bu anahtarlar meyve ve sebze olarak belirlenir ve bu değerler birer liste olarak meyve ve sebzeleri içermektedir.

  • Kurulum ve Örnek Bir Docker-Compose.yml Dosyasının Parametrelerini İnceleme

Docker-Compose Windows ve Mac için otomatik olarak yüklü gelmektedir. Linux ortamında ise manuel olarak kurulumu sizin yapmanız gerekmektedir.(Linux’a yükleme için bakınız.)

Örnek bir docker-compose.yml oluşturarak dosyayı satır satır size açıklamaya çalışacağım.

→ Dosyanın ilk satırı version olmak zorundadır. (Docker compose bunu zorunlu tutuyor) Version olarak 3'ü kullanacağımızı belirtiyoruz.(Diğer sürümler için bakınız.)

→ Dosyanın ikinci satırındaki services, çalışacak uygulamaları belirttiğimiz kısımdır. Biz burada ElasticSearch ve Kibana servisleri ile çalışacağımızı belirtiyoruz.

→ Daha sonra bu servisler içerisinde hangi volume’ların kullanılacağını, Image’leri, dışarıya açılacak port’ları tanımlayabiliriz. Biz burada ElasticSearch için Image kısmında ElasticSearch’ün 7.0.0 Image’ini, Kibana için de aynı şekilde 7.0.0 sürümünü kullanacağımızı belirtiyoruz. Devamında da yeni bir alt özellik olarak servislerimizin port’larını belirtiyoruz. ElasticSearch için 9200 numaralı port’unu dışarıya 9200 port’u üzerinden açacağımızı belirtiyoruz. Aynı şekilde Kibana’yı da 5601 port’u üzerinden açacağımızı belirtiyoruz.

  • Docker Compose Çalıştırmak

Komut satırından docker-compose.yml dosyasının bulunduğu path’e gidiyoruz ve aşağıdaki komutu çalıştırıyoruz.

Docker Compose, Container’ları bizim için izole edilmiş bir ağ içinde koşturacaktır. Bu ağda çalışan Container’lara yalnızca ağ üzerinden veya bağlantı noktalarından eşleştirilen İşletim Sistemi üzerindeki çalışan diğer Container’lar erişebilecektir. Komutumuzu çalıştırdığımızda aşağıdaki şekilde bir çıktı göreceksiniz.

Image for post
Image for post

Daha sonra “docker ps” komutunu çalıştıralım ve oluşan Container’larımızı kontrol edelim.

Evet, docker-compose ile .yml dosyası oluşturup Container’ları oluşturmak bu kadar basit.

  • Docker-Compose.yml Komutları

docker-compose build: docker-compose.yml dosyasında yaratılan servisleri build eder. (docker-compose build <service_name>komutu ile belirlinen bir servisi build edebiliriz.)

docker-compose up: docker-compose.yml dosyasını çalıştırır ve servisleri ayağa kaldırır.

docker-compose logs: Bu komut ile Docker Compose loglarına erişebilirsiniz.

docker-compose down: Docker Compose’u tetiklediğimiz docker-compose.yml dosyasının bulunduğu path’e gidip bu komutu çalıştırırsak çalışan Container’ları sonlandırırız.

Bunun dışında, benim bahsetmeyi unuttuğum ya da daha önce kullanmadığım Docker-Compose ile ilgili dokümanlara göz atmak isterseniz “dockerhub.com” adresini ziyaret edebilirsiniz.

Umarım Docker-Compose ile ilgili faydalı bilgiler verebilmişimdir.

İyi çalışmalar.

Senior Software Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store