Zpět na blog

Kontejnerizace Python aplikace pomocí Dockeru

Kontejnerizace Python aplikace pomocí Dockeru

Docker je bezplatné a open-source řešení pro vývoj, nasazení a správu aplikací v odlehčené virtualizaci na úrovni operačního systému. V této příručce si ukážeme vytvoření Python aplikace v Docker kontejneru.

Požadavky

K provedení kroků popsaných v této příručce budete potřebovat následující komponenty:

Docker kontejnery

Při spouštění různých programů ve stejném prostředí se věci mohou (a budou) kazit. Čím více programů přidáte, tím nestabilnější se stává. Pro běžné lidi to nemusí být velký problém. Pokud však jde o kritické aplikace, může to mít vážné následky.

Čím více aplikací je do systému zavedeno, tím větší je plocha pro útok. Jediná kompromitovaná aplikace může snadno vést k pádu celého systému.

K vyřešení těchto problémů můžeme použít Docker kontejnery pro sandboxing na softwarové úrovni:

  • Aplikace v kontejneru budou mít omezený přístup k souborům.

  • Kontejnerizované aplikace nevidí ostatní procesy běžící v systému.

  • Kontejneru lze vyhradit konkrétní množství hardwarových prostředků.

  • Síťové porty kontejneru nejsou vystaveny navenek.

  • Konzistentní balení téměř čehokoli napříč lokálními a produkčními prostředími.

Pro demonstraci vytvoříme jednoduchý Python server v Docker kontejneru, transformujeme kontejner na obraz a tento obraz nasadíme v testovacím produkčním prostředí.

Krok 1 – Konfigurace souborového systému

Pro hostování projektu nejprve vytvoříme vyhrazený adresář:

V tomto adresáři vytvořte podadresář src pro uložení našeho kódu:

Krok 2 – Sestavení Python serveru

V tomto kroku vytvoříme jednoduchý HTTP server v Pythonu. Vytvořte soubor server.py:

Otevřete jej v textovém editoru:

Zadejte následující kód v Pythonu:

Zde,

  • Používáme třídu HTTPServer a vyžadujeme handler ze standardní knihovny Pythonu, což udržuje program jednoduchý.

  • Funkce run inicializuje instanci HTTPserver.

  • Jak napovídají argumenty server_address, server bude naslouchat jakémukoli příchozímu připojení na portu 8080.

Nyní ověříme, zda server funguje podle očekávání. Spusťte server:

Z nového terminálu můžeme použít curl k odeslání požadavku na server:

Případně můžete na odkaz přejít ve webovém prohlížeči:

Krok 3 – Vytvoření souboru Dockerfile

Soubor Dockerfile  obsahuje potřebné instrukce pro vygenerování Docker obrazu. Instrukce v souboru jsou prováděny postupně. Zjistěte více o Dockerfile.

Vytvořte nový Dockerfile pro náš projekt:

Nyní do něj vložíme potřebný kód. Otevřete jej v textovém editoru:

Zadejte následující kód:

Zde,

  • Každý Dockerfile musí začínat FROM instrukcí. V našem případě deklarujeme Python jako základ Docker obrazu.

  • Instrukce ENV SRC_DIR určuje umístění adresáře kontejneru.

  • Instrukce COPY kopíruje soubory z adresáře src, který aktuálně hostuje Python server.

  • Proměnná PYTHONBUFFERED=1 určuje, že Python bude vypisovat a logovat výstup přímo do STDOUT. V opačném případě by logy nebyly odesílány do žádného bufferu.

  • Instrukce CMD určuje výchozí příkaz, který se má spustit při spuštění kontejneru. V tomto případě tuto instrukci používáme ke spuštění našeho Python serveru.

Krok 4 – Generování Docker obrazu

S připraveným Dockerfile nyní můžeme vytvořit obraz. Spusťte následující Docker příkaz pro zahájení procesu:

Zde,

  • Příznak -t se používá k označení našeho Docker obrazu jako python_server.

  • Docker stáhne všechny potřebné součásti a spojí je do obrazu.

Krok 5 – Spuštění obrazu

Obraz je připraven k nasazení. Můžeme jej spustit pomocí následujícího příkazu:

Zde přesměrováváme port 8080 z lokálního stroje do Docker obrazu pomocí příznaku -p.

Můžeme snadno ověřit, zda server běží, pomocí curl:

Krok 6 – Ukončení serveru

V terminálu stiskněte “Ctrl + C” pro ukončení procesu Dockeru:

Krok 7 – Export a import Docker obrazu

Nyní máme funkční Docker obraz hostující náš Python server. S pomocí funkcí exportu a importu v Dockeru jej můžeme migrovat na jakýkoli jiný systém.

Nejprve zkontrolujte seznam Docker obrazů v aktuálním systému:

Naším cílem je Docker obraz python_server, který jsme právě vytvořili. Následující příkaz jej exportuje jako archiv TAR:

Po přenesení souboru python_server.tar na cílový stroj použijte k importu Docker obrazu následující příkaz:

Závěrečné myšlenky

V této příručce jsme si ukázali vytvoření Docker obrazu z Python aplikace. Vytvořili jsme jednoduchý Python webový server a z něj sestavili Docker obraz. Tento Docker obraz lze nyní nasadit v jakémkoli prostředí a očekávat konzistentní chování.

Máte zájem dozvědět se o Dockeru více? Podívejte se na následující návody:

Přejeme úspěšnou práci!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.