GNU/Linux >> Znalost Linux >  >> Debian

Dockerizing aplikace Flask pomocí Dockeru na Debianu 10

Docker je nástroj s otevřeným zdrojovým kódem navržený tak, aby usnadnil vytváření, nasazení a spouštění aplikací pomocí kontejnerů. Kontejner je softwarový balíček, který balí kód a všechny jeho závislosti, takže aplikace běží rychle a spolehlivě z jednoho výpočetního prostředí do druhého.

Flask je populární webový rámec Pythonu. Je klasifikován jako mikrorámec, protože nevyžaduje zvláštní nástroje nebo knihovny. Ve srovnání s jinými frameworky je lehký a vysoce strukturovaný.

V tomto tutoriálu vysvětlíme, jak nasadit aplikaci Flask s Dockerem na serveru Debian 10.

Předpoklady

  • Server se systémem Debian 10.
  • Na vašem serveru je nakonfigurováno heslo uživatele root.

Začínáme

Než začnete, je dobré aktualizovat balíček vašeho systému na nejnovější verzi. Všechny balíčky můžete aktualizovat pomocí následujícího příkazu:

apt-get update -y
apt-get upgrade -y

Jakmile jsou všechny balíčky aktualizovány, restartujte systém, aby se změny projevily.

Instalovat požadované závislosti

Dále budete muset nainstalovat webový server Nginx a další závislosti do vašeho systému. Všechny je můžete nainstalovat pomocí následujícího příkazu:

apt-get install nginx apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -y

Jakmile jsou všechny balíčky nainstalovány, můžete přejít k dalšímu kroku.

Instalovat Docker

Ve výchozím nastavení není nejnovější verze Dockeru k dispozici v úložišti Debian 10. Je tedy dobré jej nainstalovat z oficiálního úložiště Docker.

Nejprve si stáhněte a přidejte klíč GPG pomocí následujícího příkazu:

wget https://download.docker.com/linux/debian/gpg apt-key přidat gpg

Dále přidejte úložiště Docker pomocí následujícího příkazu:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"

Dále aktualizujte úložiště a nainstalujte Docker pomocí následujícího příkazu:

apt-get update -y
apt-get install docker-ce -y

Po úspěšném dokončení instalace ověřte stav Dockeru pomocí následujícího příkazu:

systemctl status docker

Měli byste získat následující výstup:

? docker.service – Docker Application Container Engine Načteno:načteno (/lib/systemd/system/docker.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Ne 2020-04-19 06:26:25 UTC; Před 1 minutou 8 s Dokumenty:https://docs.docker.com Hlavní PID:8883 (dockerd) Úkoly:10 Paměť:46,6M CGroup:/system.slice/docker.service ??8883 /usr/bin/dockerd -H fd :// --containerd=/run/containerd/containerd.sockApr 19 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.413828757Z" level=warning msg="Váš ker nepodporuje swap memory limitApr 19 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.413876690Z" level=warning msg="Vaše jádro nepodporuje cgroup rt period"06. dubna:19 26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.413889604Z" level=warning msg="Vaše jádro nepodporuje cgroup rt runtimeApr 19 06:26:24 debian10 dockerd:="2020-04-19T06:26:24.414115814Z" level=info msg="Načítání kontejnerů:start."Apr 19 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:2833:2444 Z" level=info msg="Výchozí most (docker0) je přiřazen s IP aApr 19 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.972022325Z" lev el=info msg="Načítání kontejnerů:hotovo." 19. dubna 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.010940205Z" level=info msg="Démon Docker" commit=afacb8b7f0 graphdriver(s)=oApr 19 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.011145541Z" level=info msg="Daemon dokončil inicializaci 2906" 25 debian10 systemd[1]:Spuštěn Docker Application Container Engine. 19. dubna 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.074603639Z" level=info msg="API listen on / var/run/docker.sock"

V tomto okamžiku je Docker nainstalován a spuštěn. Nyní můžete přejít k dalšímu kroku.

Nastavení adresářové struktury lahvičky

Dále budete muset vytvořit adresářovou strukturu pro uložení vaší aplikace Flask.

Vytvořme adresář s názvem flask v adresáři /var/www/:

mkdir -p /var/www/flask

Dále změňte adresář na flask a vytvořte adresářovou strukturu pro flask:

cd /var/www/flask
mkdir -p app/static
mkdir -p app/templates

Statický adresář se používá k ukládání obrázků, souborů CSS a JavaScript, zatímco adresář šablon se používá k ukládání šablon HTML pro váš projekt.

Dále budete muset vytvořit soubor __init__.py v adresáři aplikace:

nano app/__init__.py

Přidejte následující obsah, abyste vytvořili instanci Flask a importovali logiku ze souboru views.py:

z importu baňky Flaskapp =Flask(__name__)z zobrazení importu aplikace

Uložte a zavřete soubor a poté vytvořte soubor views.py v adresáři aplikace.

nano app/views.py

Přidejte následující řádky

z app import [email protected]('/')def home():return "ahoj světe!"

Uložte a zavřete soubor a poté vytvořte soubor uwsgi.ini pomocí následujícího příkazu:

nano uwsgi.ini

Tento soubor bude obsahovat konfigurace uWSGI pro naši aplikaci, jak je uvedeno níže:

[uwsgi]module =maincallable =appmaster =true

Po dokončení uložte a zavřete soubor. uWSGI je možnost nasazení pro Nginx, který je protokolem i aplikačním serverem.

Dále budete muset vytvořit soubor main.py pro import instance Flask s názvem app z balíčku aplikace. Můžete jej vytvořit pomocí následujícího příkazu:

nano main.py

Přidejte následující řádek:

z aplikace pro import aplikací

Po dokončení uložte a zavřete soubor. Dále vytvořte soubor requirements.txt pro určení závislostí, které správce balíčků pip nainstaluje do vašeho nasazení Docker:

nano requirements.txt

Přidejte následující řádek, který odpovídá nejnovější verzi Flask:

Flask==1.1.2

Po dokončení uložte a zavřete soubor.

V tomto okamžiku byla vaše aplikace Flask úspěšně nakonfigurována. Nyní můžete přejít k dalšímu kroku.

Konfigurace Dockeru pro nasazení Flask

Dále budete muset vytvořit soubor Dockerfile k sestavení a nasazení aplikace flask.

Nejprve vytvořte soubor Dockerfile pomocí následujícího příkazu:

cd /var/www/flask
nano Dockerfile

Přidejte následující řádky:

Z tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7RUN apk --update add bash nanoENV STATIC_URL /staticENV STATIC_PATH /var/www/app/staticCOPY ./requirements.txt /var/www/requirements. txtRUN pip install -r /var/www/requirements.txt

Po dokončení uložte a zavřete soubor. Dále vytvořte skript start.sh pro vytvoření obrázku z Dockerfile a vytvořte kontejner z výsledného obrázku Docker.

nano start.sh

Přidejte následující řádek:

#!/bin/bashapp="docker.test"docker build -t ${app} .docker run -d -p 56733:80 \ --name=${app} \ -v $PWD:/app ${app}

Po dokončení uložte a zavřete soubor.

Poznámka :Ujistěte se, že je port 56733 volný a použitelný.

Nakonec spusťte skript pomocí následujícího příkazu:

bash start.sh

Tím se vytvoří obrázek Docker a z výsledného obrázku vytvoří kontejner, jak je znázorněno níže:

Odeslání kontextu sestavení do démona Docker 9,728kBKrok 1/6 :Z tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7python3.6-alpine3.7:Stahování z tiangolo/uwsgi-nginx-flask48ecbb6 dokončeno:Pull70ecbb6 692f29ee68fa:Úplné vytažení f75fc7ac1098:Úplné vytažení c30e40bb471c:Úplné vytažení Úspěšně postaveno f5dec1ce82Úspěšně označeno docker.test:latest22cd2bd23c9190cf2905>8a2757d76c
 Nyní můžete vypsat spuštěné kontejnery pomocí následujícího příkazu:

docker ps

Měli byste získat následující výstup:

ID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV NÁZVY PORTŮ22cd2bd23c91 docker.test "/entrypoint.sh /sta…" Asi před minutou Nahoru Asi před minutou 443/tcp, 0.0.0.0:56733->80/tcp docker.test před> 

Kontejner Docker můžete také ověřit na adrese URL http://ip-ip-vašeho-serveru:56733. Měli byste vidět následující obrazovku:

Nasadit soubory šablon

Můžete také nasadit soubory šablon pro poskytování statického a dynamického obsahu. Šablonu domovské stránky pro vaši aplikaci můžete vytvořit pomocí následujícího příkazu:

nano app/templates/home.html

Přidejte následující kódy:

    Uvítací láhev   

Domovská stránka

Toto je domovská stránka naší aplikace pro láhev.

Po dokončení uložte a zavřete soubor. Dále budete muset upravit soubor views.py, aby sloužil nově vytvořenému souboru:

nano app/views.py

Aktualizujte soubor, jak je uvedeno níže:

z baňky importovat render_templatefrom app import [email protected]('/')def home():return "hello world!"@app.route('/template')def template():return render_template('home .html')

Uložte a zavřete soubor. Poté budete muset restartovat kontejnery Docker, abyste použili změny.

Kontejner Docker s názvem docker.test můžete restartovat pomocí následujícího příkazu:

docker stop docker.test
docker start docker.test

Nyní otevřete webový prohlížeč a zadejte adresu URL http://ip-vaseho-serveru:56733/template. Nově vytvořenou šablonu byste měli vidět na následující obrazovce:

Závěr

Gratulujeme! úspěšně jste nasadili aplikaci Flask s Dockerem na serveru Debian 10. Nyní můžete replikovat aplikaci na různých serverech s minimální rekonfigurací. Pokud máte nějaké dotazy, neváhejte se mě zeptat.


Debian
  1. Jak nainstalovat Docker Engine na Debian 11

  2. Debian – použití dvou displejů v Debianu?

  3. Debian – Používáte Live-helper offline?

  1. Jak nainstalovat Docker na Debian 10 Buster

  2. Docker Guide:Dockerizing Python Django Application

  3. Instalace a používání Dockeru na Ubuntu a Debianu

  1. Docker Guide:Dockerizing Nodejs Express Application na Ubuntu 18.04

  2. Jak nainstalovat Docker na Debian 11

  3. Jak nainstalovat Docker na Debian 9