‫Tamam. Daha fazla Dockerfile örneğine bakalım.
‫Github'umdan indirdiğiniz depomuzda, Dockerfile örnek numarası 2'ye gidelim.
‫Bu sefer aslında iki dosyamız var.
‫Dockerfile'ımız var. Ve şimdi bir endekse sahibiz. html.
‫Süper basit. Selam Dünya. HTML.
‫HTML'yi anlamak çok önemli değil.
‫Onu inşa ederken, onu sadece kapsayıcı resmimize kopyalayacağız.
‫Dockerfile'a bakarsak, aslında Nginx'i FROM komutumuz olarak kullandığımızı
‫göreceksiniz.
‫Kendi Nginx'imizi üretmiyoruz çünkü ideal olarak, eğer Docker Hub'dan iş almak için
‫resmi bir resmi kullanabiliyorsanız, bu Dockerfile'ı sürdürmeniz ve çalışmanızı iyi durumda tutmanız çok
‫daha kolay olacaktır.
‫Daha basit senaryolarda, çoğu zaman resmi imaj çalışır. Ancak, çevrenize ve sistemlerinize karmaşıklık ve
‫karmaşıklık ekledikçe, muhtemelen ek bir özel yazılım eklemeniz gerektiğini, ya da
‫başlangıç ​​şeklini değiştireceğinizi ya da betikleri ekleyerek yapılandırmayı ayarlayacağınızı göreceksiniz.
‫Fakat yeni bir yeşil alan projesi başlattığımda veya eski bir uygulamayı dönüştürürsem, her zaman
‫Docker Hub'ın resmi görüntüleri ile başlarım. Sonra bir barikata bastığımda ve artık bu
‫görüntüyü kullanamıyorum, Docker Hub'a geri dönüp başka bir bakış atıp, gerçekten popüler olan,
‫güvenebileceğim ve bakabileceğim bir şey var mı diye bakabilirim. Sorunumu çözecek mi diye bak.
‫Ama kendi başına inşa etmekte yanlış olan bir şey yok.
‫Zamanla sadece daha fazla iş ve daha fazla bakım.
‫Yani burada süper basit. Üç tane stanzamız var.
‫Daha önce FROM'u gördün. Ve bu kez WORKDIR’imiz var.
‫Şimdi gerçekten sadece bir cd boşluk dizin değişikliği çalıştırıyor. Bu nedenle, run komutunu kullanmak isteyebilirsiniz ve sadece bu
‫dizine run cd yazın ve sonra bazı şeyler yapın. Ama Dockerfiles için en iyi uygulama
‫her zaman dizinleri değiştirdiğinizde her zaman ayrı bir WORKDIR stanza kullanmaktır.
‫Bu yüzden, dosyanız biraz karmaşıklaşırsa ve inşa ederken bir şeyler yapmak için
‫konteynerinizde ileri geri hareket etmeniz gerekiyorsa, her zaman WORKDIR'i kullanmak istersiniz çünkü Dockerfile'da yaptığınız şeyi
‫tanımlamak çok daha kolaydır.
‫Bu durumda, aslında burada yaptığımız şey, HTML dosyaları için varsayılan
‫Nginx dizinine geçiyoruz.
‫Docker Hub'daki varsayılan konfigürasyonda, Nginx sadece bir web sunucusu gibi davranıyor ve sadece
‫kapsayıcı diskten statik dosyalara hizmet veriyor.
‫Son stanza burada, bizde, kopya. Ve bu, kaynak kodunuzu yerel makinenizden
‫veya yapı sunucularınızdan konteyner resimlerinize kopyalamak için her zaman kullanacağınız stanzadır.
‫Bu durumda, sadece basit endeksimizi alıyoruz. html ve Nginx varsayılan dizinindeki dosyanın
‫üzerine yazıyoruz, böylece web sunucusu için özel giriş sayfamız.
‫Bunu yapmadan önce, cmd gibi gerekli stanzları kaçırdığımızı göreceksiniz.
‫Peki bundan nasıl kurtulabiliriz?
‫Eh, zaten FROM görüntüde belirtilen bir cmd var.
‫Ve biz FROM kullandığımızda, biz bir kelime bile olsa, biz 'bizing' Dockerfile her şeyi miras alırız.
‫Bu, Dockerfiles'ı birbirine bağlayabiliyorsunuz, böylece görüntüler diğer görüntülere bağlı olan
‫diğer görüntülere bağlı oluyor.
‫Tamam. Bunun nasıl çalıştığını görelim.
‫Bunu yapmadan önce, bir varsayılan Nginx sunucusunun ne yaptığını kendimize bir an önce hatırlatalım.
‫Hızlı bir docker konteyneri run -p 8080 yapalım ve buna çok fazla ihtiyaç duymayacağız, bu yüzden bir --rm yapacağız,
‫böylece bırakmayı sileriz. Adını umursamıyoruz. Nginx'i
‫yöneteceğiz. Tarayıcımıza atlayıp sadece localhost yazdığımızda, varsayılan
‫Nginx dizin sayfasını görüyoruz.
‫TAMAM.
‫Bunu hatırlayalım, ve şimdi bu konteynırı bırakalım ve şimdi
‫Nginx versiyonumuzu ekstra kaynak kod dosyamız ile inşa edeceğiz.
‫TAMAM.
‫Bu aslında gerçekten hızlı gitmeli.
‫Fark ettin sadece birkaç saniye sürdü. Çünkü görüntü önbellekimizde zaten Nginx vardı. Ve tüm bu,
‫çok küçük bir dosyayı kopyalayıp çalışma dizinini değiştiriyordu.
‫Şimdi Nginx için koştuğumuz tam komutu çalıştıralım. Sadece bu sefer, yeni
‫oluşturduğumuz bu yeni resmi kullanacağız.
‫Tarayıcımıza geçin, yenileyin ve harika.
‫Özel dizin HTML'imiz orada çalışıyor ve kapsayıcı çalışıyor.
‫Hızlı bir görüntü yaparsak, en son resmimizi yukarıdan görebiliriz.
‫Bunu aslında Docker Hub'a göndermek istiyorsak, daha önce yaptığımız gibi çalışır.
‫Yeniden etiketlememiz gerekiyor. Yani docker görüntü etiketi yapabiliriz.
‫Yardım komutunu hatırlarsanız, biçime bakabiliriz ve her zaman
‫etiketlediğimiz etiket ve istediğimiz etiket çağrılır. Son olarak html ile docker görüntü etiketi nginx.
‫Ve sonra ona bretfisher demeliyim ... bunun gibi.
‫Sonra tekrar bir docker görüntüsünü yaparsam, en üstteki iki satırın aynı resim kimliğiyle aynı olduğunu ve
‫farklı olarak etiketlendiğini göreceksiniz.
‫Şimdi bu depo ve etiketle bir docker itmesi yapabilirim ve Docker Hub’da bulabilirim.