Geliştirme Ortamları için Docker Compose Kullanımı

Tüm yazılım geliştirme süreçlerinde bizleri en çok zorlayan kısım yeni bir POC ( Proof Of Concept ) çalışması yaparken yada bir altyapı hazırlarken tüm geliştirme ortamlarının hazırlanması işlemidir. Özellikle birçok ortamı içinde barındıran bir sistemden bahsediyorsak bu dahada içinden çıkılmaz bir durum oluşturmaktadır.

Şu sıralar bir çok geliştiricinin ve ekibin hayatını kurtaran container altyapısını kullanan “docker” bizler için bir süper kahraman kurtarıcı görevini başarı ile üstlenmektedir. Herkesin dilinden düşüremediği docker ile ilgili genel bilgileri intenetten araştırarak hepimiz bulabilmekteyiz. Ama docker için offical web sitesinden dokümanları inceleyerek en geniş bilgiye ulaşabilirsiniz.

Kendi POC çalışmalarımızda kullanarak genellikle altyapı kurulma işlemlerini kolayca atlatabildiğimiz docker-compose dosyalarından bahsedeceğiz. Ve bu işlemleri rahatça halledebileceğiniz docker-compose.yml dosyalarını barındıran github repositorylerini sizler ile github hesabımız üzerinden paylaşıyor olacağız.

Peki nedir bu docker-compose ?

Docker Compose , container içinde çalışabilen uygulamaların, tek bir komutla ayaklandırılıp durdurulabilmesine olanak sağlayan “yml” tabanlı bir dosyadır.“version”,”services”,”networks” ve “volumes” olarak tanımlanan 4 ana parçacıktan oluşur.

Version ile ilgili compose dosyasının sürümü , service ile yürütülmesi gereken servislerin tanımları , networks ile kullanılan subnet/gateway ve network tipi tanımları ve volumes ile veri yığını alanı için kullanılacak tanımlamalar belirlenir.

$ docker-compose up komutu ile gerekli dosya çalıştırılarak containerlar ayağa kaldırılır. $ docker-compose down ile sistem durdurulur.

Docker compose kullanımı ile en geniş bilgiye link üzerinden ulaşabilirsiniz.

Docker Compose Geliştirme Ortamları

Geliştirme takımı olarak kendi kullanımlarımız için hazırladığımız 5 adet docker-compose.yml dosyasını ve kısaca ne işe yaradıklarını sizler ile paylaşmak istiyoruz. İlgili repositoylere ulaştığınızda “README.md” dosyaları üzerinden tüm kullanım gereksinimlerine ulaşabilirsiniz.

1) mssql-redis-rabbitmq

MsSql, Redis ve RabbitMQ containerları ile redis üzerinde cachlediğiniz verileri RabbitMQ üzerinden kuyruk yönetimine dahil edip en son olarak MsSQL üzerinde kalıcı veriyi tutabileceğiniz geliştirme ortamıdır.

2) mongodb-redis-rabbitmq

MongoDb, Redis ve RabbitMQ containerları ile redis üzerinde cachlediğiniz verileri RabbitMQ üzerinden kuyruk yönetimine dahil edip en son olarak MongoDb üzerinde kalıcı veriyi tutabileceğiniz geliştirme ortamıdır.

3) postgresql-redis-rabbitmq

PostgreSql, Redis ve RabbitMQ containerları ile redis üzerinde cachlediğiniz verileri RabbitMQ üzerinden kuyruk yönetimine dahil edip en son olarak PostgreSql üzerinde kalıcı veriyi tutabileceğiniz geliştirme ortamıdır.

4) elasticsearch-logstash-kibana

Logstash, Elasticsearch ve Kibana containerları ile Logstash üzerinden topladığınız verileri elasticsearch üzerinden indexlediğiniz en son olarak Kibana üzerinden izleme işlemlerini yapabildiğiniz geliştirme ortamıdır.

5) redis-postgresql-elasticsearch

PostgreSql, Redis ve Elasticsearch containerları ile istediğiniz bir veri tönetim sistemi oluşturabileceğiniz geliştirme ortamıdır.