Docker Bölüm 4 için sizlere tekrar merhaba. 🙂

Bölüm 3’de basit bir “key value look-up” servisi olarak çalışan uygulamayı tek bir servis olarak yapılandırdık. Bu bölüme, bu basit uygulamayı iki minik servis olarak nasıl yapılandıracağımızla başlayacağız. İlgili amacımız içib size “redis” i tanıştıracağım. “redis” i, “in-memory data structure store” olarak tanımlayabiliriz. “redis”i, “database”, “cache” ve “message broker” olarak kullanabiliriz. Geniş bir alanda, kritik projelerde kullanılmaktadır. “Twitter Timeline Service” ve “Facebook News Feed” kullanıldığı yerlere örnek olarak verilebilir. Şimdi “redis”i, “key value look-up” servis olarak çalışan uygulamamıza nasıl dahil edeceğimizi görelim. Uygulamamız “python” ile yazılmıştı. Bu nedenle “redis key-value store” için “python client”a ihtiyacımız var. Şekil 1.’de ilgili web adresini görmekteyiz.

Şekil 1. Redis key-value store için python client

 

“Redis”i kullanabilmek için app.py betiğinde değişiklik yapmamız gerekiyor. “redis clinet”i app.py’de “import” etmemiz ve “redis client” ı başlatma komutunu girmemiz gerekiyor. Şekil 2.’de kırmızı ile belirtilen satırları ekledik. “Dockerfile” da redis’i yüklemek için bir ekleme yapıyoruz. Şekil 3.’de kırmızı ile yapılan değişliklik belirtildi.

Şekil 2. “app.py” dosyasında yapılan değişiklik.

Şekil 3. Dockerfile’da “redis” i yüklemek için yapılan değişiklik.

Şimdi uygulama (python application) ve redis “container” larını çalıştırarak bu iki “container” i birbirine linkleyeceğiz. J bu amaçla “Docker Container Link” özelliğini kullanacağız. Şekil 4.’de yapacağımız örnek için detay görebilirsiniz.

Öncelikle “redis” imajını “download” ediyoruz.

“docker ps” ile “redis docker” ın çalıştığını gözlemleyelim.

İkinci adımda aşağıdaki gibi dockerapp imajımızı oluşturalım.

 

Üçüncü adımda “dockerapp container”i oluşturalım.

Şekil 4. Docker Container Links.

Şekil 5. Dockerapp uygulaması.

Şekil 5.’de dockerapp uygulamasının çalıştığını görebiliriz.  Acaba “docker link” nasıl çalışıyor. Öncelikle, “dockerapp container” a giriş yapalım.

redis container’ın IP ve container ID’sini  /etc/hosts dosyasında  görüyoruz.  Bu IP, gerçekten “redis container” a mı ait diye bir bakalım isterseniz. Bu amaçla “docker inspect redis_DockerID”  komutunu kullanabiliriz. IPAdress kısmında 172.17.0.2 görülmektedir.

“dockerapp container” a tekrar giriş yapalım ve “redis” sistemini “ping” leyelim.

“Docker container” linklerin ana amacı, mikroservis mimarisinde uygulama geliştirdiğimizde, farklı “container” larda çalışan pek çok bağımsız bileşeni çalıştırabilmemizdir. Bu sayede, “container,” “container” lar arası güvenli bir tünel oluşturmaktadır. Dışarıya açılması gereken bir porta ihtiyaç yoktur.

“Docker Compose”kavramına a bir giriş yapalım. Bu örnekte, “redis container”ı oluşturduk ve dockerapps’ı bu “container”a linkledik. Bu örnekte sadece iki tane “container” vardı. Peki, eğer “container” sayımız çok olsaydı ne yapacaktık? Linkleri/servisleri bu şekilde manüel olarak oluşturmak çok pratik olmayacaktı. İşte bu durumda karşımıza “docker-compose.yml” dosyası çıkıyor. Tüm “container” tanımlarını bu dosyada tanımlayabiliyoruz. Daha detay için sizleri gelecek bölüme bekliyorum. J

Yazımı oluşturmamda değerli katkılarından ötürü James Lee hocama çok teşekkür ediyorum.

 

4 Temmuz 2017 Asiye Yiğit