Natrag na blog

Kontejnerizirajte Python aplikaciju pomoću Dockera

Kontejnerizirajte Python aplikaciju pomoću Dockera

Docker je besplatno rješenje otvorenog koda za razvoj, implementaciju i upravljanje aplikacijama u lakoj virtualizaciji na razini operacijskog sustava. U ovom vodiču demonstrirat ćemo stvaranje Python aplikacije unutar Docker spremnika.

Preduvjeti

Za izvođenje koraka prikazanih u ovom vodiču trebat će vam sljedeće komponente:

Docker spremnici

Kada se izvode različiti programi unutar istog okruženja, stvari se mogu pokvariti (i pokvarit će se). Što više programa dodate, ono postaje nestabilnije. Za prosječne ljude to možda nije velika stvar. Međutim, kada se radi o kritičnim aplikacijama, može doći do ozbiljnih posljedica.

Što se više aplikacija uvede u sustav, to je veća površina za napad. Jedna kompromitirana aplikacija može lako dovesti do pada cijelog sustava.

Kako bismo riješili ove probleme, možemo koristiti Docker spremnike za izolaciju (sandboxing) na razini softvera:

  • Aplikacije unutar spremnika imat će ograničen pristup datotekama.

  • Kontejnerizirane aplikacije ne mogu vidjeti druge procese koji se izvode u sustavu.

  • Spremniku se može dodijeliti određena količina hardverskih resursa.

  • Mrežni portovi spremnika nisu izloženi izvana.

  • Dosljedno pakiranje gotovo svega u lokalnim i produkcijskim okruženjima.

Za demonstraciju ćemo izgraditi jednostavan Python poslužitelj unutar Docker spremnika, pretvoriti spremnik u sliku i implementirati sliku unutar lažnog produkcijskog okruženja.

Korak 1 – Konfiguracija datotečnog sustava

Za smještaj projekta najprije ćemo stvoriti namjenski direktorij:

Unutar direktorija stvorite poddirektorij src za pohranu našeg koda:

Korak 2 – Izgradnja Python poslužitelja

U ovom koraku stvorit ćemo jednostavan HTTP poslužitelj u Pythonu. Stvorite datoteku server.py:

Otvorite je u uređivaču teksta:

Unesite sljedeći Python kod:

Ovdje,

  • Koristimo klasu HTTPServer i tražimo rukovatelj iz standardne Python knjižnice, čime program ostaje jednostavan.

  • Funkcija run pokreće instancu HTTPserver.

  • Kao što argumenti server_address sugeriraju, poslužitelj će slušati sve dolazne veze na portu 8080.

Sada ćemo provjeriti radi li poslužitelj kako se očekuje. Pokrenite poslužitelj:

Iz novog terminala možemo koristiti curl za slanje zahtjeva poslužitelju:

Alternativno, možete pristupiti poveznici u web pregledniku:

Korak 3 – Stvaranje Dockerfile-a

Jedan Dockerfile  sadrži potrebne upute za generiranje Docker slike. Upute u datoteci slijede se sekvencijalno. Saznajte više o Dockerfile.

Stvorite novi Dockerfile za naš projekt:

Sada ćemo u njega unijeti potreban kod. Otvorite ga u uređivaču teksta:

Unesite sljedeći kod:

Ovdje,

  • Svaki Dockerfile mora započeti s FROM direktivom. U našem slučaju, deklariramo Python kao bazu Docker slike.

  • Direktiva ENV SRC_DIR određuje lokaciju direktorija spremnika.

  • Direktiva COPY kopira datoteke iz src direktorija koji trenutno sadrži Python poslužitelj.

  • Varijabla PYTHONBUFFERED=1 određuje da će Python ispisivati i bilježiti izlaz izravno u STDOUT. U suprotnom, zapisi se ne bi slali ni u jedan međuspremnik.

  • Direktiva CMD određuje zadanu naredbu koja se pokreće prilikom izvršavanja spremnika. U ovom slučaju koristimo direktivu za pokretanje našeg Python poslužitelja.

Korak 4 – Generiranje Docker slike

S Dockerfile spremnim, sada možemo izgraditi sliku. Pokrenite sljedeću Docker naredbu za početak procesa:

Ovdje,

  • Zastavica -t koristi se za označavanje naše Docker slike kao python_server.

  • Docker će preuzeti sve potrebne komponente i spojiti ih u sliku.

Korak 5 – Izvršavanje slike

Slika je spremna za implementaciju. Možemo je izvršiti pomoću sljedeće naredbe:

Ovdje prosljeđujemo priključak 8080 s lokalnog računala na Docker sliku pomoću -p zastavice.

Možemo lako provjeriti radi li poslužitelj pomoću curl:

Korak 6 – Zaustavljanje poslužitelja

U terminalu pritisnite “Ctrl + C” kako biste prekinuli Docker proces:

Korak 7 – Izvoz i uvoz Docker slike

Sada imamo funkcionalnu Docker sliku koja udomljuje naš Python poslužitelj. Uz pomoć Dockerovih značajki izvoza i uvoza, možemo je migrirati na bilo koji drugi sustav.

Najprije provjerite popis Docker slika na trenutnom sustavu:

Naša meta je python_server Docker slika koju smo upravo stvorili. Sljedeća naredba izvest će je kao TAR arhivu:

Nakon prijenosa python_server.tar datoteke na ciljno računalo, upotrijebite sljedeću naredbu za uvoz Docker slike:

Završne misli

U ovom smo vodiču prikazali izgradnju Docker slike iz Python aplikacije. Stvorili smo jednostavan Python web poslužitelj i od njega izgradili Docker sliku. Docker slika se sada može implementirati u bilo koje okruženje uz očekivanje dosljednog ponašanja.

Želite li saznati više o Dockeru? Pogledajte sljedeće vodiče:

Sretno računanje!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.