Bölüm:9 Docker Build ve Dockerfile

Onur BOLATOĞLU
2 min readJan 18, 2021

--

docker image build -t onurbolatogluu/app . > Uygulamamızın ve Dockerfile dosyamızın bulunduğu dizine gidiyoruz ve yukarıda bulunan komutu çalıştırıyoruz böylelikle image yaratıyoruz. -t ile tag atıyoruz. (.) ile bütün gerekli dosyaların bulunduğumuz dizinde olduğunu belirtiyoruz.

  • imaj yaratılırken, talimatlar yapılırken herhangi bir kopyalamaya ihtiyaç varsa ve bu bize bazı dosyaları sorarsa o dosyaların hepsi bu dizinde ara (.) diyoruz.
  • -f parametresi dockerfile dosyamızın isimleri farklıysa belirtebiliriz.

docker container run onurbolatogluu/app > Oluşturduğumuz imaj’dan container yarattık.
docker image history onurbolatogluu/app > Belirttiğimiz imaj için tüm katmanları ve imaj oluştururken hangi talimatların kullanıldığını görebiliriz.

Örnek Dockerfile,

FROM ubuntu:18.04 → base imaj
RUN apt-get update → güncellemeri yüklemek için belirtiyoruz.
RUN apt-get default-jre → jre uygulmasını kur.
WORKDIR /app > app dizinine geç dizin yoksa oluştur.
COPY /myapp . → myapp dizininde bulunan dosyaları . ile app dizinine kopyala.
CMD [“java” , “app”] → Container başlatıldığında app servisini çalıştır.

Not: Bir imajı dockerhub’mıza push ederken imajda bulunan bir katman dockerhub üzerinde mevcutsa bunu tekrardan push etmez, o katmana denk gelen talimat ile dockerhub’da bulunan aynı katmanı bizim repository’mize mount eder. Örnek olarak talimatlarımızda FROM ubuntu:18.04 talimatı varsa bu base imaj hub’da mevcutsa bu imajı hub üzerinden kendi repository’mize link olarak ekler. Dockerfile ile bir imaj oluşturduk diyelim, ardından aynı dockerfile ‘dan yeni bir imaj daha oluşturmak istersek bu süre çok kısa olacaktır.(dockerfile’da değişiklik yapmazsak) Bunun ana sebebi docker imaj oluşturulurken, Dockerfile’da yaptığı her talimatın ön belleğine alır. 2.defa aynı dockerfile ile imaj yaratmak çok kısa sürecektir.
Eğer uygulama dosyalarımızda ve talimatlar da değişiklik yaparsak imaj yaratılırken dockerfile talimatlarını docker işlerken farkederse değişiklik yapılan talimat ve ondan sonraki talimatlar, sıfırdan işlenir. Burada önemli olan imaj’da değişiklik yapılması muhtemel olan adımların dockerfile’da sonlara yazılması gerekir. Böylelikle değişiklik olmayan adımların tekrar işlenmesine gerek kalmayacaktır.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response