Konačno smo dogurali do onog zanimljivog dela. Do pravljenja naše verzije nekog imidža. Ako vam je kojim slučajem izvetro šta je imidž, ne krivim vas, mnogo sam veliki razmak napravio između tekstova. Podsetite se klikom na OVAJ link
Pa da zaronimo. Dockerfile je srce svakog imidža. Svi do poslednjeg image koji ste preuzeli sa nekog registra napravljeni su na ovaj način.
Napomena: Dockerfile, mora baš tako i da se imenuje veliko D je obavezno. Bez ekstenzije je.
Udjite u test direktorijum, otvorite terminal. I kreirajte Dockerfile
touch Dockerfile
Editujte ga editorom koji vam odgovara. Ja ću koristiti nano.
nano Dockerfile
Hajde da napravimo imidž koji će biti zasnovan na php 7.2 fpm. I da mu ubacimo samo naj potrebnije stvari. Naravno i da ga ažuriramo.
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y
CMD ["php-fpm"]
EXPOSE 9000
Da raščlanimo:
FROM php:7.2-fpm
– Ovim dockeru kažemo da preuzme imidž iz repozitorijuma php sa tagom 7.2-fpm. Ovako možete modifikovati bilo koji image koji imate u lokalnim repozitorijumima ili ste od negde preuzeli. Time će biti kreiran prvi sloj(layer) našeg imidža. A Dockerfile php:7.2-fpm možete pogledati ovde.
RUN apt-get update && apt-get install -y
– Ovom komandom stvaramo novi sloj. Operativni sistem na kome je zasnovan php 7.2 fpm( debian:buster-slim) ažuriraće se i postaviti sloj broj 2 unutar ovog imidža.
RUN komandu, koristite isključivo za proces izvršavanja instalacija i modfikacija koji će se upisati u vašu verziju imidža.
CMD ["php-fpm"]
– Po stvaranju kontejnera od ovog imidža, izvršiće se ova komanda. I tako će docker kontejner ostati da radi, neće pasti. U stvari mi samo pokrećemo php-fpm.
CMD – Ako imate više CMD direktiva u okviru jednog dockerfajla, izvršiće se sve u build procesu, sem poslednje. Ona će ostati da se izvrši pri podizanju kontejnera. Ovo je bitno znati, da se ne oslanjate na njih za više stvari koje treba uraditi na inicijalizaciji kontejnera. Za te stvari, koristimo ENTRYPOINT.
EXPOSE 9000
– To znači da vam port 9000 neće biti otvoren kada pokrenete ovaj kontejner ka host mašini, već samo ka dockerovoj mreži.
Konačno buildanje
sudo docker build -t ime_imidza .
Komanda se pokreće iz direktorijuma gde je smešten Dockerfile. -t označava tag i obavezna je taćka na kraju, kako bi dockeru rekli da smo unutar direktorijuma gde nam je Dockerfile.
Kao što vidite, imali smo 4 komande u našem Dockerfajlu. Sve 4 su kreirale svoje kontejnere u okviru kojih su se izvršile i postale lajeri tj slojevi. I na kraju smo stvorili novi image. Sada pustite mašti na volju, vidite koliko se lako prave imidži. A jednom napravljeni imidž, možete na milion mesta koristiti.
I na kraju da vam napomenem. Prijavite se na moju mailing listu, ili na telegram kanal. https://t.me/LudiSistemas . U slučaju da se desi neki problem sa fejsbuk stranicom, da ostanemo u kontaktu.
NAPOMENA: Ovo i sva uputstva koja slede nisu oficijalna i moja su interpretacija originalne dokumentacije i uslova pod kojim se izvode. Tako da mogu i ne moraju da budu ispravna.