.dockerignore Dosyası Nedir? Nasıl Kullanılır?
Merhaba,
Bu içeriğimizde Docker imagelerimizi gereksiz dosyalardan arındırmamızı sağlayan .dockerignore dosyası üzerine konuşuyor olacağız.
.dockerignore Nedir?
.dockerignore dosyası, Docker CLI ile gerçekleştirilen image build işleminde kopyalamaya tabi tutulan uygulama dosyaları arasında boyutu lüzumsuz yere şişiren ve bunun yanında kritik arz eden dosya ve klasörleri arındırma görevi gören özelleştirilmiş bir dosyadır.
Nasıl Kullanılır?
Docker CLI, aldığı bir build talimatını işlemeden önce uygulamanın root dizininde .dockerignore isimli bir dosyayı arar. Eğer dosya mevcutsa, içerisindeki belirtilen dosya ve klasör dizinlerinin üretilecek image içerisine kopyalanmasını engeller.
Dosya ve klasör dizinlerini belirtebilmek için içerik olarak aşağıdaki formatları kullanabilirsiniz.
Format | Davranış |
---|---|
*# yorum satırı | Yorum satırı oluşturur. |
*/ornek* | Ana dizinde adı ‘ornek’ ile başlayıp devamı herhangi bir şey olan tüm dosyaları arındırır. |
ornek? | ‘ornek’ ile başlayıp bir sonraki karakteri herhangi bir şey olan tüm dosyaları arındırır. |
**/ornek/ | Hangi dizinde olursa olsun ‘ornek’ isimli klasör(leri) arındırır. |
**/ornek* | Hangi dizinde olursa olsun başı ‘ornek’ ile başlayıp devamı herhangi bir şey olan tüm dosyaları arındırır.. |
Dikkat ederseniz buradaki kırmızıyla yazılmış ** dışındaki tüm eşleşmeler Go dilinin filepath.Match kuralları kullanılarak yapılmaktadır. ** ise Docker’a özel n sayıda dizi tarayıcı operatörüdür. Root dizininden başlayıp belirtilen klasör ya da dosyayı bulana kadar taramayı gerçekleştirmektedir.
Aşağıdaki örnek kod bloğunu incelerseniz eğer;
*.md !Sifre.md
Tüm ‘.md’ uzantılı dosyaların arındırılacağı bildirilmiştir. Lakin ‘Sifre.md’ isimli dosya ! operatörü ile istisna olarak belirtilmiş ve arındırılması engellenmiştir.
.dockerignore ile Dockerfile dosyasının ve kendisinin image içerisine kopyalanmasını engelleyebilir ve böylece Docker CLI ile bu dosyaların sadece işlenmesini ama fiziksel olarak kopyalanmamasını sağlayabilirsiniz.
Genel bir örnek yapmamız gerekirse eğer aşağıda tanımlanan .dockerignore içeriğindeki;
# Hariciler **/bin/ **/obj/ **/Dockerfile* **/.dockerignore*
dosyalarını hariç tuttuğumuz bir image nesnesinde aşağıdaki boyut farkını görebilirsiniz.
Böylece bir önceki makalede kaleme aldığımız Multistage Build konusunda olduğu gibi .dockerignore dosyasıylada image boyutunu küçültmeyi hedeflemekte ve asgari boyutta olsada bu gayeye bir nebze hizmet etmiş bulunmaktayız.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
Teşekkürler