12. Virtualizace

Cíle cvičení

  1. Seznámení s technologií Docker
  2. Základní techniky testování
  3. Sestavení projektu pro Gitlab CI/CD

Podklady

Vytvoření Docker image

Vytvoříme jednoduchou aplikaci ve Flasku, která bude vracet renderovanou šablonu:

# main.py
 
from flask import Flask, render_template
 
app = Flask(__name__)
 
@app.route('/')
def home():
    return render_template('home.html')
 
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80, debug=True)

Šablona (v adresáři templates):

<p>Hello world!</p>

Pro přípravu Docker obrazu připravíme seznam potřebných modulů a Dockerfile, na základě se obraz vytvoří.

# requirements.txt

Flask==2.0.3
pytest==7.1.3
Werkzeug==2.2.2

# Dockerfile
 
FROM python:3.8-slim-buster
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 80
CMD ["python", "main.py"]

# docker-compose.yml

version: '1'
services:  
  web:    
    build: .    
    volumes: - .:/code    
    ports: - "80:80"

Pokud je připraven předpis docker-compose.yml, lze využít následující příkaz:

docker-compose up

Pokud došlo ke změně v souborech s požadavky na sestavení, je třeba spustit

docker-compose build

Testování

Pro testování využijeme modul pytest, který bude třeba nejprve nainstalovat

pip install pytest

Test postupně spouští testy v souborech, které jsou v adresáři tests. V adresáři tests vytvořte následující soubor:

# test_home_route.py
 
from main import app
 
def test_home_route():
    """Make sure we get an expected response from home route"""
    response = app.test_client().get('/')
    assert response.status_code == 200

Test lze spustit lokálně:

python -m pytest

CI/CD pipeline

stages:
    - test
    - build
    - deploy

run_tests:
    stage: test
    image: python:3.10.8-slim-buster
    before_script:
        - pip install -r requirements.txt
    script:
        - python -m pytest

courses/b0b37nsi/tutorials/12.txt · Last modified: 2024/05/16 12:37 by viteks