Conținut curs
Python Avansat
Despre lecție

Obiective

În această lecție, veți învăța:

  1. Ce sunt containerele Docker și de ce sunt utile
  2. Instalarea și configurarea Docker
  3. Crearea și gestionarea imaginilor Docker pentru aplicațiile Python
  4. Utilizarea Docker Compose pentru a gestiona mai multe containere
  5. Publicarea aplicațiilor Python în registre Docker

1. Ce sunt containerele Docker și de ce sunt utile

Docker este o platformă care permite dezvoltatorilor să creeze, să distribuie și să ruleze aplicații în containere. Un container este o unitate standardizată de software care include codul, dependențele și mediul de rulare necesare pentru a rula o aplicație. Containerele Docker oferă mai multe avantaje, cum ar fi:

  • Izolare: Containerele se execută independent de sistemul de operare gazdă și de alte containere, ceea ce asigură izolarea resurselor și proceselor.
  • Portabilitate: Containerele pot fi rulate pe orice sistem care suportă Docker, fără a necesita configurări suplimentare.
  • Consistență: Containerele asigură o experiență consistentă între diferite etape ale ciclului de dezvoltare și între mai mulți dezvoltatori.
  • Scalabilitate: Containerele pot fi scalate orizontal și distribuite în cluster-uri pentru a satisface cerințele aplicațiilor de înaltă performanță.

2. Instalarea și configurarea Docker

Pentru a începe să utilizați Docker, trebuie să instalați și să configurați Docker pe sistemul dvs.:

  1. Accesați site-ul Docker la https://www.docker.com/ și descărcați Docker Desktop pentru sistemul dvs. de operare (Windows, macOS sau Linux).

  2. Instalați Docker Desktop urmând instrucțiunile de instalare specifice sistemului dvs. de operare.

  3. După instalare, lansați Docker Desktop și verificați că funcționează corect, executând următoarea comandă în terminal:

    bash
  1. docker --version
    ```
    
    Această comandă ar trebui să afișeze versiunea Docker instalată pe sistemul dvs.
    

3. Crearea și gestionarea imaginilor Docker pentru aplicațiile Python

Pentru a crea un container Docker pentru o aplicație Python, urmați acești pași:

  1. Creați un fișier Dockerfile în directorul rădăcină al aplicației dvs. Python. Acest fișier conține instrucțiunile necesare pentru a construi imaginea Docker a aplicației.

  2. Adăugați următorul conținut în fișierul Dockerfile:

    dockerfile
  • # Folosiți o imagine de bază Python
    FROM python:3.9
    
    # Setează directorul de lucru
    WORKDIR /app
    
    # Copiați fișierul de cerințe în container
    COPY requirements.txt .
    
    # Instalați dependențele aplicației
    RUN pip install --no-cache-dir -r requirements.txt
    
    # Copiați fișierele aplicației în container
    COPY . .
    
    # Expuneți portul pe care rulează aplicația
    EXPOSE 8000
    
    # Comanda pentru a rula aplicația
    CMD ["python", "app.py"]
    ```
    
    
  • Asigurați-vă că aplicația dvs. Python are un fișier requirements.txt care conține toate dependențele necesare.

  • Construiți imaginea Docker a aplicației, înlocuind myapp cu numele dorit pentru imagine:

    bash
  • docker build -t myapp .
    ```
    
    
  • După ce imaginea a fost construită, puteți rula un container Docker bazat pe această imagine:

    bash
  1. docker run -p 8000:8000 -d --name myapp-container myapp
    ``## 4. Utilizarea Docker Compose pentru a gestiona mai multe containere
    

Docker Compose este un instrument pentru a defini și gestiona aplicații care utilizează mai multe containere Docker. Acesta permite definirea serviciilor, rețelelor și volumelor utilizate de aplicație într-un singur fișier docker-compose.yml.

Pentru a crea un fișier docker-compose.yml pentru aplicația dvs. Python, urmați acești pași:

  1. În directorul rădăcină al aplicației dvs. Python, creați un fișier numit docker-compose.yml.

  2. Adăugați următorul conținut în fișierul docker-compose.yml, înlocuind myapp cu numele dorit pentru imaginea Docker a aplicației:

    yaml
  • version: '3.9'
    services:
      myapp:
        build: .
        image: myapp
        ports:
          - "8000:8000"
    
  • Acum, puteți utiliza Docker Compose pentru a construi și rula aplicația într-un container Docker:

    bash
  • docker-compose up -d
    ```
    
    Această comandă va construi imaginea și va crea un container care rulează aplicația, expunând portul 8000.
    
    
  • Pentru a opri și elimina serviciile definite în docker-compose.yml, executați:

    bash
  1. docker-compose down
    ```
    

5. Publicarea aplicațiilor Python în registre Docker

După ce ați construit imaginea Docker a aplicației dvs. Python, puteți să o publicați într-un registru Docker, cum ar fi Docker Hub, pentru a facilita distribuirea și rularea aplicației pe alte sisteme.

  1. Înregistrați-vă pentru un cont Docker Hub la https://hub.docker.com/ dacă nu aveți deja unul.

  2. Autentificați-vă în contul Docker Hub prin execuția următoarei comenzi:

    bash
  • docker login
    ```
    
    Introduceți numele de utilizator și parola contului dvs. Docker Hub când vi se solicită.
    
    
  • Etichetați imaginea Docker a aplicației cu numele de utilizator Docker Hub și numele repository-ului dorit:

    bash
  • docker tag myapp <your-docker-username>/myapp
    ```
    
    Înlocuiți `<your-docker-username>` cu numele de utilizator Docker Hub.
    
    
  • Încărcați imaginea Docker în Docker Hub:

    bash
  1. docker push <your-docker-username>/myapp
    ```
    
    Această comandă va încărca imaginea Docker în Docker Hub, unde poate fi accesată și rulată pe alte sisteme care suportă Docker. Pentru a rula aplicația pe un sistem diferit, utilizați următoarea comandă:
    
    ````bash
    docker run -p 8000:8000 -d --name myapp-container <your-docker-username>/myapp
    ```
    
    Aceasta va descărca și rula imaginea Docker a aplicației, expunând portul 8000.
    

Încheiere

În această lecție, ați învățat cum să utilizați containerele Docker pentru a dezvolta și distribui aplicații Python. Docker vă permite să creați aplicații izolate, portabile și scalabile, facilitând colaborarea și distribuirea aplicațiilor între diferite sisteme și medii de dezvoltare.