Merhaba arkadaşlar,
Bu yazımızda sizinle beraber basit bir docker uygulaması yapacağız ve temel docker komutlarını işleyeceğiz. Önceki yazımda docker dünyasına basit bir giriş yapmıştım. Şimdi üstüne az daha katarak basit bir demo ayağa kaldıralım. Ben bu demo için kendi hazırlamış olduğum bir spring boot projesini kullandım. Yani elimdeki jar dosyasını dockerize edip öyle ayağa kaldıracağım. Bu işlemi şimdi adım adım gösterelim.
Öncelikle bir Dockerfile tanımlamamız gerekiyor. Önceden belirttiğim gibi Dockerfile bir tanımlayıcı dosya gibi düşünün. İçinde oluşturacağımız container içinde ne barındıracağını tanımlıyoruz. Daha sonra da bu dosyayı build edip bir image elde ediyoruz.
1 2 3 4 5 6 7 8 |
FROM java:8 ADD target/movie-microservice-0.0.1.jar app.jar EXPOSE 2222 CMD ["java", "-jar","app.jar"] |
Yukarıda en basit hali ile bir Dockerfile tanımı görüyorsunuz. Konumuzun bu kısmında isterseniz Dockerfile komutları hakkında biraz bilgi verelim.
FROM: Projemizi kuracağımız image’ı(base image) çağırır. Her projenin bir base image’ı vardır. Bu bir java projesi olduğu için bize JVM yeterlidir. O yüzden sadece java-8’i çağırdık.
ADD: Oluşturacağımız container içine kendi localimizden dosya atabilmemizi sağlar. Komut [src, dest] mantığıyla kullanılır.
EXPOSE: Container kendi başına bir host gibi davranacak ve aynı zamanda bir port üzerinden çalışacaktır. Burada projemizde tanımladığımız 2222 portunu tanımlıyoruz.
CMD: Container üzerinde çalışacak varsayılan komut belirtilir. Her Dockerfile’da sadece 1 adet bulunur.
RUN: Build sırasında çalıştırılacak komutları belirtmek için kullanılır.
ENV: Container içindeki sistem parametresi tanımlarını yapmak için
kullanılır.
ENTRYPOINT: Container üzerinde yapısal bir komut girdisi sağlar. Yani bir bin dosyasının ya da kendi scriptimizin komutunu belirleyip daha sonra container ayakta iken ayrı bir terminalden çalıştırabilmemizi sağlar.
WORKDIR: Container üzerinde çalışılacak dizini belirtmek için kullanılır. Eğer yukarıdaki örnekte WORKDIR /demo dedikten sonra ADD komutu çalıştırsaydık jar dosyamızın dizini /demo/app.jar olacaktı.
Dockerfile oluşturulduktan terminal üzerinde
1 2 3 4 5 |
docker build -t <tag_name> <file_path> |
şeklinde Dockerfile build ediyoruz. Bu işlem sonrası elimizde bir docker image var. Hala bir container oluşturmuş değiliz. Öncelikle elimizde hangi image’lar var kontrol edelim. Bunun için docker images komutunu kullanıyoruz.
1 2 3 4 5 6 7 8 |
REPOSITORY TAG IMAGE ID CREATED SIZE movie latest 739daba79513 About a minute ago 670 MB java 8 d23bdf5b1b1b 5 days ago 643 MB hello-world latest c54a2cc56cbb 6 months ago 1.85 kB |
Gördüğümüz gibi base image ve kendi movie image’imiz görülüyor. Java image’ı bizim kendi Dockerfile dosyamızda belirttiğimiz image. Üstteki ise bizim örnek olarak oluşturduğumuz image. Örneğimizin boyutu 670 MB olmasına rağmen görüldüğü gibi 643 MB’si projemiz için gerekli olan kütüphanelere harcanmış. Bizim projemiz sadece 27 MB ki spring kütüphanelerinden kaynaklanıyordur. Şimdi container oluşturalım. Bunun için ekrana
1 2 3 4 5 |
docker run -p 8080:2222 movie |
komutunu giriyoruz. Komutu inceleyecek olursak -p ile localimizdeki 8080 portunu containerdaki 2222 komutuna eşliyoruz. En sonda da image adını yazıyoruz. Komutu çalıştırdığımızda jar dosyamız ayağa kalkacaktır. Sonrasında tarayıcıda localhost:8080 girdikten sonra ekranımız karşımıza gelecektir.
Evet arkadaşlar ilk docker containerımızı oluşturmuş olduk. Bundan sonraki yazılarda görüşmek dileğiyle…