петак, 19 априла, 2024
Слободни професионалац

Доку

Аутор: Немања Недељковић

Доку (енг. Dokku) је екстремно једноставан PaaS (platform as a service). Филозофија које су се држали програмери док су развијали овај софтвер је поприлично јасна. Они су желели да направе што једноставнији, потпуно функционалан клон Хероку платформе. У томе су и успели.

Оно што је предност оваквог система, јесте то што ви не морате (али можете) да размишљате о целокупном контејнеру у којем се извршава апликација, већ само о апликацији и њеним захтевима. Све што треба да урадите јесте да “пушујете” (енг. push) свој гит репозиторијум и Доку ће од њега направити потпуно функционалан докер контејнер.dokku

Шта се дешава када пошаљем гит репозиторијум?

Прво што треба да знате о Докуу, Херокуу и сличним решењима, јесте то да они користе скрипте за припрему окружења (енг. buildpacks). Ова скрипта је у суштини скуп додатног софтвера који је неопходан за компајлирање и извршавање ваше апликације. Тако нпр. имамо скрипту за ПХП (енг. PHP), за Пајтон, за Руби, итд.gitdoku

Шта је билдпек и како се користи?

Билдпек је скупина од три баш (енг. bash – bourne again shell) скрипте које имају једноставну улогу.

  • bin/detect – Улога ове скрипте је да утврди користи ли ваша скрипта овај билдпек (ако корисник не дефинише који билдпек жели да користи, при изградњи платформа покреће по реду ову скрипту из свих билдпекова, да би утврдила који билдпек треба да примени на одређену апликацију).
  • bin/compile – Улога ове скрипте је да трансформише вашу апликацију у „нешто што може да се изврши” тако што нпр. у случају ПХП-а инсталира зависности које су дефинисане у composer.json фајлу, као и веб-сервер и ПХП.
  • bin/release – Улога ове скрипте је да „каже” које команде треба да се покрену при покретању worker/web процеса.

Дакле, када пошаљете своју апликацију, неопходно је да се открије који је билдпек погодан за њу.

Постоје две методе: можете сами подесити који се билдпек користи, или да Доку то сам открије.

Све ово се одвија тако што Доку покрене Херокуиш (енг. Herokuish – клон Хероку контејнера за изградњу, који је базиран да Херокуовом основном контејнеру) и проследи му ваша подешавања и апликацију. Уколико се међу тим подешавањима налази билдпек, Херокуиш га скида и инсталира. У супротном, Херокуиш пролази редом кроз локалне билдпекове док bin/detect не да потврдан одговор.

Након тога извршава се bin/compile, који скида неопходне зависности; компајлира, уколико је то потребно, итд.

Да би Херокуиш „знао” како да покрене вашу апликацију, потребан му је Procfile. Procfile је веома једноставан фајл који дефинише команду за покретање ваше апликације.

Пример:

web: node index.js

Ако ваша апликација не поседује Procfile, онда се од bin/release скрипте очекује да га генерише.

Сада, када је ваша апликација потпуно изграђена, преостао је још један корак. Докер (енг. Docker), контејнер у којем се све то десило, чува се као Докер слика која садржи вашу апликацију.

Када се покрене тај Докер контејнер, покреће се и ваша апликација.

Остало је само да ваша апликација „комуницира” са „спољашњих светом”. Прво што је неопходно да би се та комуникација остварила јесте да ваша апликација „слуша” на одређеном порту. Да бисте знали који је то порт, Доку вам прослеђује PORT варијаблу у ENV-у. Затим, креира nginx.conf фајл који садржи подешавања да се „направи” Енџин-икс (енг. NginX) мрежни посредник (енг. proxy) до ваше апликације.

Шта је предност једног оваквог система

Предности је много. Набројаћемо само неке од њих и објаснићемо их на што једноставнији начин.

  1. коинзистентно окружење – сигурни сте да ће се један контејнер потпуно исто понашати на различитим серверима као и да су контејнери исти зато што се користи Херокуов стандард који дефинише шта сваки контејнер мора да поседује од апликација;
  2. брза испорука крајње апликације и, због тога што је окружење релативно лагано, можете да имате и локални Доку;
  3. код је једноставан, читљив и врло је једноставно писати додатке за овај систем;
  4. већ постоји заједница људи који користе Доку па је самим тим и проверен и има многобројне додатке који вам могу бити од помоћи.doku