utorak, 16 aprila, 2024
Slobodni profesionalac

Doku

Autor: Nemanja Nedeljković

Doku (eng. Dokku) je ekstremno jednostavan PaaS (platform as a service). Filozofija koje su se držali programeri dok su razvijali ovaj softver je poprilično jasna. Oni su želeli da naprave što jednostavniji, potpuno funkcionalan klon Heroku platforme. U tome su i uspeli.

Ono što je prednost ovakvog sistema, jeste to što vi ne morate (ali možete) da razmišljate o celokupnom kontejneru u kojem se izvršava aplikacija, već samo o aplikaciji i njenim zahtevima. Sve što treba da uradite jeste da “pušujete” (eng. push) svoj git repozitorijum i Doku će od njega napraviti potpuno funkcionalan doker kontejner.dokku

Šta se dešava kada pošaljem git repozitorijum?

Prvo što treba da znate o Dokuu, Herokuu i sličnim rešenjima, jeste to da oni koriste skripte za pripremu okruženja (eng. buildpacks). Ova skripta je u suštini skup dodatnog softvera koji je neophodan za kompajliranje i izvršavanje vaše aplikacije. Tako npr. imamo skriptu za PHP (eng. PHP), za Pajton, za Rubi, itd.gitdoku

Šta je bildpek i kako se koristi?

Bildpek je skupina od tri baš (eng. bash – bourne again shell) skripte koje imaju jednostavnu ulogu.

  • bin/detect – Uloga ove skripte je da utvrdi koristi li vaša skripta ovaj bildpek (ako korisnik ne definiše koji bildpek želi da koristi, pri izgradnji platforma pokreće po redu ovu skriptu iz svih bildpekova, da bi utvrdila koji bildpek treba da primeni na određenu aplikaciju).
  • bin/compile – Uloga ove skripte je da transformiše vašu aplikaciju u „nešto što može da se izvrši” tako što npr. u slučaju PHP-a instalira zavisnosti koje su definisane u composer.json fajlu, kao i veb-server i PHP.
  • bin/release – Uloga ove skripte je da „kaže” koje komande treba da se pokrenu pri pokretanju worker/web procesa.

Dakle, kada pošaljete svoju aplikaciju, neophodno je da se otkrije koji je bildpek pogodan za nju.

Postoje dve metode: možete sami podesiti koji se bildpek koristi, ili da Doku to sam otkrije.

Sve ovo se odvija tako što Doku pokrene Herokuiš (eng. Herokuish – klon Heroku kontejnera za izgradnju, koji je baziran da Herokuovom osnovnom kontejneru) i prosledi mu vaša podešavanja i aplikaciju. Ukoliko se među tim podešavanjima nalazi bildpek, Herokuiš ga skida i instalira. U suprotnom, Herokuiš prolazi redom kroz lokalne bildpekove dok bin/detect ne da potvrdan odgovor.

Nakon toga izvršava se bin/compile, koji skida neophodne zavisnosti; kompajlira, ukoliko je to potrebno, itd.

Da bi Herokuiš „znao” kako da pokrene vašu aplikaciju, potreban mu je Procfile. Procfile je veoma jednostavan fajl koji definiše komandu za pokretanje vaše aplikacije.

Primer:

web: node index.js

Ako vaša aplikacija ne poseduje Procfile, onda se od bin/release skripte očekuje da ga generiše.

Sada, kada je vaša aplikacija potpuno izgrađena, preostao je još jedan korak. Doker (eng. Docker), kontejner u kojem se sve to desilo, čuva se kao Doker slika koja sadrži vašu aplikaciju.

Kada se pokrene taj Doker kontejner, pokreće se i vaša aplikacija.

Ostalo je samo da vaša aplikacija „komunicira” sa „spoljašnjih svetom”. Prvo što je neophodno da bi se ta komunikacija ostvarila jeste da vaša aplikacija „sluša” na određenom portu. Da biste znali koji je to port, Doku vam prosleđuje PORT varijablu u ENV-u. Zatim, kreira nginx.conf fajl koji sadrži podešavanja da se „napravi” Endžin-iks (eng. NginX) mrežni posrednik (eng. proxy) do vaše aplikacije.

Šta je prednost jednog ovakvog sistema

Prednosti je mnogo. Nabrojaćemo samo neke od njih i objasnićemo ih na što jednostavniji način.

  1. koinzistentno okruženje – sigurni ste da će se jedan kontejner potpuno isto ponašati na različitim serverima kao i da su kontejneri isti zato što se koristi Herokuov standard koji definiše šta svaki kontejner mora da poseduje od aplikacija;
  2. brza isporuka krajnje aplikacije i, zbog toga što je okruženje relativno lagano, možete da imate i lokalni Doku;
  3. kod je jednostavan, čitljiv i vrlo je jednostavno pisati dodatke za ovaj sistem;
  4. već postoji zajednica ljudi koji koriste Doku pa je samim tim i proveren i ima mnogobrojne dodatke koji vam mogu biti od pomoći.doku