GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Docker Guide:Dockerizing Python Django Application

Docker je projekt s otevřeným zdrojovým kódem, který poskytuje otevřenou platformu pro vývojáře a správce systému pro vytváření, balení a spouštění aplikací kdekoli jako lehký kontejner. Docker automatizuje nasazení aplikací uvnitř softwarových kontejnerů.

Django je framework webových aplikací napsaný v pythonu, který sleduje architekturu MVC (Model-View-Controller). Je k dispozici zdarma a vydán pod licencí open source. Je rychlý a navržený tak, aby pomohl vývojářům dostat jejich aplikaci online co nejrychleji.

V tomto tutoriálu vám krok za krokem ukážu, jak vytvořit docker image pro existující projekt aplikace Django v Ubuntu 16.04. Dozvíme se o ukotvení aplikace python Django a poté aplikaci nasadíme jako kontejner do prostředí dockeru pomocí skriptu docker-compose.

Abychom mohli nasadit naši aplikaci python Django, potřebujeme další obrázky dockeru. Potřebujeme obrázek dockeru nginx pro webový server a obrázek PostgreSQL pro databázi.

Co uděláme?

  1. Nainstalujte Docker-ce
  2. Nainstalujte Docker-compose
  3. Konfigurace prostředí projektu
  4. Stavět a spustit
  5. Testování

Krok 1 – Instalace Docker-ce

V tomto tutoriálu nainstalujeme edici komunity docker-ce z úložiště docker. Nainstalujeme edici komunity docker-ce a docker-compose, které podporují soubor pro psaní verze 3.

Před instalací docker-ce nainstalujte potřebné závislosti dockeru pomocí příkazu apt.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Nyní přidejte klíč dockeru a úložiště spuštěním příkazů níže.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Aktualizujte úložiště a nainstalujte docker-ce.

sudo apt update
sudo apt install -y docker-ce

Po dokončení instalace spusťte službu docker a povolte její spuštění při každém spuštění systému.

systemctl start docker
systemctl enable docker

Dále přidáme nového uživatele s názvem 'omar' a přidáme ho do skupiny dockerů.

useradd -m -s /bin/bash omar
usermod -a -G docker omar

Přihlaste se jako uživatel omar a spusťte příkaz docker, jak je znázorněno níže.

su - omar
docker run hello-world

Ujistěte se, že dostanete zprávu hello-world od Docker.

Instalace Docker-ce byla dokončena.

Krok 2 – Instalace Docker-compose

V tomto tutoriálu budeme používat nejnovější podporu docker-compose pro soubor pro psaní verze 3. Docker-compose nainstalujeme ručně.

Stáhněte si nejnovější verzi docker-compose pomocí příkazu curl do adresáře '/usr/local/bin' a udělejte ji spustitelnou pomocí chmod.

Spusťte níže uvedené příkazy.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Nyní zkontrolujte verzi docker-compose.

docker-compose version

A ujistěte se, že máte nejnovější verzi docker-compose 1.21.

Byla nainstalována nejnovější verze docker-compose, která podporuje soubor pro psaní, verze 3.

Krok 3 – Konfigurace prostředí projektu

V tomto kroku nakonfigurujeme prostředí projektu python Django. Vytvoříme nový adresář 'guide01' a uděláme z něj hlavní adresář pro soubory našich projektů, jako je Dockerfile, projekt Django, konfigurační soubor nginx atd.

Přihlaste se k uživateli 'omar'.

su - omar

Vytvořte nový adresář 'guide01' a přejděte do adresáře.

mkdir -p guide01
cd guide01/

Nyní v adresáři 'guide01' vytvořte nové adresáře 'project' a 'config'.

mkdir project/ config/

Poznámka:

  • Adresář 'project':Všechny naše soubory projektu python Django budou umístěny do tohoto adresáře.
  • Adresář 'config':Adresář pro konfigurační soubory projektu, včetně konfiguračního souboru nginx, souboru požadavků python pip atd.

Vytvořit nový soubor requirements.txt

Dále vytvořte nový soubor 'requirements.txt' v adresáři 'config' pomocí příkazu vim.

vim config/requirements.txt

Vložte konfiguraci níže.

Django==2.0.4  
gunicorn==19.7.0 
psycopg2==2.7.4

Uložte a ukončete.

Vytvořte soubor virtuálního hostitele Nginx django.conf

V adresáři config vytvořte konfigurační adresář 'nginx' a přidejte konfigurační soubor virtuálního hostitele django.conf.

mkdir -p config/nginx/
vim config/nginx/django.conf

Zde vložte následující konfiguraci.

upstream web {
  ip_hash;
  server web:8000;
}

# portal
server {
  location / {
        proxy_pass http://web/;
    }
  listen 8000;
  server_name localhost;

  location /static {   
    autoindex on;   
    alias /src/static/;   
  }
}

Uložte a ukončete.

Vytvořte soubor Dockerfile

Vytvořte nový 'Dockerfile' v adresáři 'guide01'.

Spusťte níže uvedený příkaz.

vim Dockerfile

Nyní vložte skript Dockerfile níže.

FROM python:3.5-alpine
ENV PYTHONUNBUFFERED 1 

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev bash

RUN mkdir /config 
ADD /config/requirements.txt /config/ 
RUN pip install -r /config/requirements.txt
RUN mkdir /src
WORKDIR /src

Uložte a ukončete.

Poznámka:

Chceme vytvořit obrazy Docker pro náš projekt Django založený na Alpine Linuxu, nejmenší velikosti Linuxu. Náš projekt Django poběží Alpine Linux s nainstalovaným pythonem 3.5 a přidá balíček postgresql-dev pro podporu databáze PostgreSQL. A pak nainstalujeme všechny balíčky pythonu uvedené v souboru 'requirements.txt' pomocí příkazu python pip a vytvoříme nové '/src' pro náš projekt.

Vytvořit skript Docker-compose

Pomocí níže uvedeného příkazu vim vytvořte soubor 'docker-compose.yml' v adresáři 'guide01'.

vim docker-compose.yml

Zde vložte následující konfiguraci.

version: '3'
services:
  db:
    image: postgres:10.3-alpine
    container_name: postgres01
  nginx:
    image: nginx:1.13-alpine
    container_name: nginx01
    ports:
      - "8000:8000"
    volumes:
      - ./project:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: django01
    command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"
    depends_on:
      - db
    volumes:
      - ./project:/src
    expose:
      - "8000"
    restart: always

Uložte a ukončete.

Poznámka:

Pomocí tohoto skriptu docker-compose file vytvoříme tři služby. Vytvořte databázovou službu s názvem 'db' pomocí PostgreSQL alpine Linux, vytvořte službu 'nginx' znovu pomocí Nginx alpine Linuxu a vytvořte náš kontejner python Django pomocí vlastních obrázků dockeru generovaných z našeho Dockerfile.

Konfigurace projektu Django

Zkopírujte soubory projektu Django do adresáře 'project'.

cd ~/django
cp -r * ~/guide01/project/

Přejděte do adresáře 'project' a upravte nastavení aplikace 'settings.py'.

cd ~/guide01/project/
vim hello_django/settings.py

Poznámka:

Nasadíme jednoduchou aplikaci Django s názvem 'hello_django' app.

Na řádek 'ALLOW_HOSTS' přidejte název služby 'web'.

ALLOW_HOSTS = ['web']

Nyní změňte nastavení databáze. Budeme používat databázi PostgreSQL, která běží jako služba s názvem 'db' s výchozím uživatelem a heslem.

DATABASES = {  
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

A pro konfigurační adresář 'STATIC_ROOT' přidejte tento řádek na konec řádku souboru.

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Uložte a ukončete.

Nyní jsme připraveni vytvořit a spustit projekt Django pod kontejnerem docker.

Krok 4 – Vytvoření a spuštění obrazu Docker

V tomto kroku chceme vytvořit image Docker pro náš projekt Django pomocí konfigurace v adresáři 'guide01'.

Přejděte do adresáře 'guide01'.

cd ~/guide01/

Nyní vytvořte obrazy dockeru pomocí příkazu docker-compose.

docker-compose build

Spusťte všechny služby ve skriptu docker-compose.

docker-compose up -d

Počkejte několik minut, než Docker sestaví náš obraz Pythonu a stáhne obrazy dockeru nginx a postgresql.

A až to bude hotové, zkontrolujte spuštěné obrazy kontejneru a vypište obrázky dockeru v systému pomocí následujících příkazů.

docker-compose ps
docker-compose images

A nyní získáte tři spuštěné kontejnery a seznam obrazů Docker v systému, jak je znázorněno níže.

Naše aplikace Python Django nyní běží v kontejneru dockeru a byly vytvořeny obrázky dockeru pro naši službu.

Krok 5 – Testování

Otevřete webový prohlížeč a zadejte adresu serveru s portem 8000, moje je: http://ovh01:8000/

Nyní získáte výchozí domovskou stránku Django.

Dále otestujte stránku správce přidáním cesty '/admin' do adresy URL.

http://ovh01:8000/admin/

A uvidíte přihlašovací stránku správce Django.

Aplikace Dockerizing Python Django byla úspěšně dokončena.


Docker
  1. Spuštění PostgreSQL v Dockeru, Rychlý a praktický průvodce

  2. Jak spustit Nginx v kontejneru Docker:Průvodce krok za krokem

  3. Kdy a proč používat Docker

  1. Nainstalovat Python 3.11 na Ubuntu 20.04 – průvodce krok za krokem?

  2. Kompletní průvodce pro začátečníky k protokolování dockeru

  3. Rychlý průvodce používáním Docker Compose

  1. Jak nainstalovat Django na Ubuntu 18.04

  2. Jak nainstalovat Django na CentOS 7

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