aplikacny-kontajner

Čo je aplikačný kontajner a na čo je dobrý?

Aplikačný kontajner je samostatný balík softvéru, ktorý obsahuje všetko potrebné k svojmu behu. Je možné ho jednoducho spustiť v akomkoľvek kompatibilnom prostredí bez nutnosti zložitej inštalácie. Po spustení beží kontajner vo vlastnom priestore, vyhradenom hosťujúcim operačným systémom. Má vlastné sieťové rozhranie (IP adresu) a vlastný file systém. Najznámejšia platforma aplikačných kontajnerov je Docker.

Technológia spúšťania aplikačných kontajnerov je veľmi podobná napríklad projektu OpenVZ, dokonca sa dá prirovnať k virtuálnemu serveru, no jej využitie je v tomto prípade odlišné.

Základné princípy

V kontajneri by mal bežať len jeden proces. Napríklad pri PHP aplikácii, by sme v jednom kontajneri spustili PHP-FPM a v druhom nginx, ktorý sa na PHP bude pripájať cez TCP port. Aplikácia komunikuje s okolitým svetom cez TCP (alebo UDP). Kontajner má vypublikované porty, na ktorých reaguje buď na spojenia z Internetu alebo z iných kontajnerov. Viditeľnosť vybraných portov zvonku zabezpečuje hostiteľský operačný systém, napríklad cez reverse proxy alebo NAT.

Aplikácia by mala byť konfigurovateľná cez premenné prostredia, napríklad adresu a prihlasovacie údaje databázy, ktoré je ľahké nastaviť pri spúšťaní kontajneru. Ďalej by mala logovať na štandardný alebo chybový výstup (stdout, stderr), o správu týchto výstupov by sa mal starať hostiteľský systém.

Aplikácia by nemala používať file system na ukladanie perzistentných dát. Ideálne použiť rôzne druhy databáz (SQL, redis a pod.), alebo S3 na ukladanie napríklad uploadovaných súborov. Z tohoto pravidla sa však často robia výnimky, preto v prípade potreby vieme do kontajnera pripojiť volume zo zdieľaného úložiska.

Na čo je dobrý aplikačný kontajner?

Aplikačný kontajner jednoducho spustím na akomkoľvek prostredí bez potreby inštalácie. Napríklad pre docker kontajnery, stačí mať na serveri nainštalovaný docker a viem spustiť akýkoľvek kontajner. Čiže vývojár si môže na svojom notebooku pod dockerom spúšťať a ladiť aplikačný kontajner, ktorý potom len uploaduje do repozitára a môže sa nasadiť do testovacieho prostredia, či do produkcie bez potreby ďalších úprav. Ušetrí to kopec problémov typu “ale u mňa to funguje dobre”.

Pokiaľ ešte nevyužívate výhody kontajnerov pri vývoji aplikácie, vieme vám pripraviť prostredie na vybudovanie kontajnerov z vašej klasickej aplikácie.

Podobné blogy