Host Üzerinde Çalışan MySql Servisine Docker Container’dan Ulaşmak

Uygulamalarımızı artık, docker’ın hayatımıza girmesiyle birlikte, container teknolojileri üzerine tasarlamaya başladık. Microservice yaklaşımını kullanarak, uygulamalarımızı birbirinden bağımsız, yönetilebilir parçalara ayırarak geliştiriyoruz. Docker Container’lar bu yaklaşımın en önemli bileşenlerinden birisidir.

Zaman zaman ortaya çıkan ihtiyaçlardan biriside, özellikle geliştirme ortamında, container içerisinden host bilgisayarda çalışan servislere örneğin MySql veritabanına erişebilmektir. Kendi servislerimize yaptığımız gibi veritabanını da bir container içerisinden kullanabiliriz. Fakat bu yaklaşım her zaman uygun bir seçenek olmayabiliyor. Böylesi durumlarda da veritabanına bir şekilde erişmek gerekiyor. Nasıl erişilebileceğini görmek için hem bir docker hem de bir docker-compose örneği yapacağız.

İlk olarak MySql üzerinde myuser diye bir kullanıcı tanımlayıp, yetki veriyoruz. Aşağıdaki şekilde yetki vermezsek, erişim hataları alacağız.

Komut satırında (powershell) docker run komutunu add-host parametresi ile çağıralım. Imaj olarak docker hub üzerindeki resmi mysql imajını kullanıyoruz:

Gönderdiğimiz 192.56.1.20 değeri kendi lokal bilgisayarımızın (host) ip’sini ifade ediyor.

Ip değerini de basitçe şöyle alabiliriz (Powershell):

Linux ortamında da benzer şekilde ip değerini aşağıdaki gibi gönderebiliriz.

Böylece mysql’e bağlandık ve sql komutlarını çalıştırmaya başlayabiliriz.

docker-compose

docker-compose ile de aynı strateji uygulayabiliriz. Bir docker-compose.yml dosyası hazırlayalım:

İmajımız resmi mysql imajı olmak üzere komut satırından (powershell) LOCALHOST ortam değişkenini atıyorum:

Linux üzerinde çalışıyorsak, ortam değişkenini aşağıdaki şekilde atıyoruz:

Bu şekilde LOCALHOST ortam değişkenini set etmiş olduk.

komut satırından docker-compose up diyerek işlemimizi başlatabiliriz.

docker-compose run ile mysqldb servisine bağlanarak mysql üzerinde işlem yapalım.

mysql üzerinde show schemas komutunu artık çağırabiliriz.

CircleCI ortamında MySql’e Bağlanmak

CircleCI Nedir?

CircleCI, kullanımı gittikçe yaygınlaşan bir sürekli entegrasyon (continuous integration) ve sürekli teslim (continuous delivery) platformudur.

Kodları commit eder etmez, Github’dan veya Bitbucket’tan kodları otomatik olarak çekip derleyebilen, testleri çalıştırabilen bir servis. Güzel olan tarafı, açık kaynak projeleri için ücretsiz paralel build çalıştırabilmesi, diğer özel projeler içinde yine sınırsız sayıda fakat aynı anda tek build çalıştırabilmesidir. Sorun çıkınca da ssh ile bağlanıp, hatayı giderme imkanı vermektedir.

CircleCI, pek çok proje tipini otomatik olarak derleyebilmektedir. Fakat CircleCI’ın build işini özelleştirmek istediğimiz zaman circle.yml diye bir dosya oluşturup, ayarlarımızı buraya girmemiz gerekiyor.

CircleCI üzerinde de pek çok servis, geliştiricilerin kullanımına sunulmak üzere, hazır kurulu gelmektedir. MySql’de bunlardan birisi. Bu servise erişmek için, daha önce uyguladığımız yöntemi burada da uyguluyoruz.

CircleCI üzerinde çalışan MySql’e container üzerinden erişmek için, öncelikle mysql ayar dosyasını değiştirmemiz gerekiyor.

echo “bind-address satırı ile başlayan kısımda, mysql’e her taraftan bağlanılabilmesine izin vermiş oluyoruz. Bu ayarı yaptıktan sonra, veritabanını tekrar başlatıyoruz. Herhangi bir host üzerinden bağlanabilen yeni bir ubuntu kullanıcısı oluşturup, yetkilerini veriyoruz.

Böylece veritabanına bağlanarak işlemlerimizi gerçekleştirebiliriz.

 

 

 

Yorum Gönder

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top