Selamlar arkadaşlar bu yazım ile birlikte Docker ortamında bulunan Containerlarmızı HEALTHCHECK parametresi ile container sağlık kontrolü yapacağız. Ancak bunu yaparken docker run ve dockerfile örneklerini göstererek yapacağım. Bu parametreleri girerken farklı komutları da kullanacak ve onların açıklamalarını da yapacağım.
HEALTHCHECK bir Container’ın durumunu izlemek ve otomatik olarak sağlıklı olup olmadığını belirlemek amacıyla kullanılan bir özelliktir. Bu sayede uygulamalarımızın çalışma durumlarını algılarız ve çalışmamaları durumunda müdahale edebiliriz.
Komudumuzun çalışma mantığında ise HEALTHCHECK’in almış olduğu parametrelerle belirli bir komut çalıştırılır ve bu komutun çıktısına göre ise durum belirlenmiş olur arkadaşlar.
Bu kontrol, Docker Swarm veya Kubernetes gibi orkestrasyon araçları tarafından otomatik olarak kullanılabilir, bu sayede unhealthy olan containerları otomatik olarak yeniden başlatabilirler.
Healthy olması durumunda http status code 200-300 dönerken, unhealthy olması durumunda 400-500 olarak dönüş sağlamaktadır.
–health-cmd : Makine durumunun kontrol edilirken çalıştırılması gereken komudu yazdığımız alandır.
–health-interval : Komudu ile ne kadar sürede bir kontrol etmesi gerektiğini belirtiyoruz. 5s yazarsak 5 saniyede bir check edecektir.
–health-retries : Komudu yardımıyla Unhealthy statusunda olan containerlar için kaç defa daha health kontrol çalıştırması gerektiğini belirtiyoruz.
–health-start-interval : Container çalıştırıldıktan sonra bu değer ile girilen süre kadar health işlemi bekletilir ve sonrasında başlatılır. Bunun amacı ise Container’daki servislerinizin hemen çalışmaya başlamayabilir ve bundan dolayı Health işlemini bekletmektir.
–health-start-period : interval ile benzerdir.
–health-timeout : Health kontrol testinin maksimum çalışma süresini belirtir. Yani kontrol komudu çalışmaya başladığında bu alana vermiş olduğumuz süre içerisinde çalışmalıdır. Çalışmaz ise unhealthy işaretlenir.
–no-healthcheck : Komuduylada sağlık testi hiç yaptırmayız.
Komudumuzu açıkladığımıza göre artık örneklerimizle başlayabiliriz.
Docker Run komutunda HealthCheck işlemleri :
> docker run -d -p 80:80 --name sistemdostu --health-cmd "curl -f http://localhost || exit 1" --health-start-period 6s --health-interval 10s --health-timeout 5s --health-retries 3 nginx
Komudumuz ile health komutlarını birleştirerek 80 portundan yayın yapan, adının sistemdostu olduğu ve içerisinde servis olarak nginx çalıştırdığımız container’ımızı run ediyoruz. Bu sayede direk olarak komut satırından container oluştururken Healthcheck komutlarımızı çalıştırabiliyoruz.
DockerFile içerisinde HEALTHCHECK işlemleri :
Daha sonra Dockerfile oluşturuyoruz ve aşağıdaki kodları içerisine giriyoruz.
FROM nginx:latest
LABEL maintainer="Sistemdostu" version="1" name="nginx_sistemdostu"
RUN apt-get update && apt-get install curl -y
HEALTHCHECK --retries=3 --interval=10s --timeout=5s CMD curl -f http://localhost || exit 1
EXPOSE 80
Burada gördüğünüz gibi HEALTHCHECK ibaresinden sonra ayarlamalarını giriyoruz. LABEL olan kısım ise container’ımız hakkında bilgiler yazdığımız kısımdır. Dosyamıza gerekli kodları ekledikten sonra kayıt edip çıkalım.
> docker build -t sistemdostu_nginx:1.0 .
Komudumuz yardımıyla Dockerfile’ımızı build ederek bir image oluşturuyoruz.
ilk olarak images’ları kontrol ediyorum ve sonrasında aşağıdaki kod ile container’ımı çalıştırıyorum.
> docker run -d -p 80:80 --name sistemdostu_com sistemdostu_nginx:1.0
Sonrasında ise docker ps ile çalıştırılan containerları kontrol ediyorum. Status alanında healty:starting ile başlayan süreç healthy olarak bitiyor. Ve containerlarımızda sağlık kontrollerini tamamlamış oluyoruz.
Bu yazımında sonuna geldik arkadaşlar. Sorularınızı ve görüşlerinizi bana yorumlar kısmından bildirebilirsiniz. Destek olmak istersenizde YouTube üzerinde bulunan SistemDostu kanalıma abone olabilirsiniz. Hepimize kolay gelsin.