06/12/2021

Docker-3 Dockerfile

Docker file ın yapısına kısaca bakalım. Dockerfile her zaman “Dockerfile” olarak adlandırılmak zorundadır.

FROM : hangi image i base alacağız?

ENV : environmental settings. Genelde burada kullanmak her zaman iyi bir fikir değil. Çünkü ENV settingler değişince tüm containeri yeniden oluşturup deploy etmek gerekli.

RUN : sadece Image (Container) içinde koşacak komut.

COPY : Image oluştururken Host olan makinadan CT içine veri kopyalamak için gerekir.

CMD : Normalde bir nodejs uygulamasını başlatmak için “$ node server.js” gibi bir komut girmek gerekir. işte onu yapıyor aynı zamanda ENTRY POINT tir. Yani bir Dockerfile da birden çok RUN komutu olabilir ancak bir tane CMD olur ve bu containerin göreve başladığı noktadır.

FROM node:13-alpine

ENV MONGO_DB_USERNAME=admin \
    MONGO_DB_PWD=password

RUN mkdir -p /home/app

COPY ./app /home/app

# set default dir so that next commands executes in /home/app dir
WORKDIR /home/app

# will execute npm install in /home/app because of WORKDIR
RUN npm install

# no need for /home/app/server.js because of WORKDIR
CMD ["node", "/home/appserver.js"]

artık docker dosyamız hazır olduğuna göre imageimizi oluşturabiliriz.

Bunu docker build ile yapacağız ancak image’a bir isim ve bir Tag ayrıca nereye oluşturulacağını vermemiz gerekiyor.

$ docker build -t my-app:1.0 .

ama diyelim ki bir hata var docker run dediğimizde ve CT çalışmadı. Hatayı bulduk düzelttik sonra Dockerfile i editledik o zaman, tekrar build edilmesi gerekiyor.

Image oluşturuldu ve bunu bir CT olarak koşarken bağlanıp bakmak istersek,

$ docker exec -it <CTID> /bin/bash
eğer bin/bash yok derse
$ docker exec -it <CTID> /bin/sh

Leave a Reply