Vytvoření kontejnerizované webové aplikace v Pythonu v Azure

Tento článek je 3. částí 5dílné série kurzů o kontejnerizaci a nasazení webové aplikace Python do Azure App Service. V části 2 jste vytvořili a spustili image kontejneru místně. V tomto článku vytvoříte stejnou Python webovou aplikaci přímo v Azure Container Registry bez místní instalace Dockeru. Sestavení image v Azure je obvykle rychlejší a jednodušší než její místní sestavení a následné odeslání do registru. Cloudové vytváření imagí také eliminuje nutnost, aby Docker běžel ve vašem vývojovém prostředí.

Azure App Service umožňuje nasazovat a spouštět kontejnerizované webové aplikace pomocí kanálů CI/CD z platforem, jako je Docker Hub, Azure Container Registry a Azure DevOps. Jakmile je image Dockeru v Azure Container Registry, můžete ji nasadit do Azure App Service.

Předpoklady

Než začnete, ujistěte se, že jste dokončili část 2 této série kurzů, která popisuje:

  • Klonování ukázkového úložiště (Django nebo Flask)
  • Vytvoření skupiny prostředků pro prostředky v Azure
  • Spuštění kontejnerizované aplikace místně za účelem ověření, že funguje.

Potřebujete také:

Důležité

Ukázkový soubor Dockerfile používá python:3.8-slim jako základní image. Python 3.8 dosáhla konce životnosti v říjnu 2024 a už nepřijímá aktualizace zabezpečení. Aktualizujte soubor Dockerfile tak, aby používal python:3.12-slim nebo python:3.13-slim pro produkční nasazení.

Tento diagram služby zvýrazňuje součásti popsané v tomto článku.

snímek obrazovky se službami, které se používají v kurzu – Kontejnerizovaná aplikace Pythonu v Azure se zvýrazněnou cestou build-in-cloud.

Vytvoření služby Azure Container Registry

Pokud už máte Azure Container Registry, přeskočte tento krok a pokračujte dalším krokem. V opačném případě vytvořte nový Azure Container Registry pomocí Azure CLI.

Příkazy Azure CLI můžete spouštět v Azure Cloud Shell nebo v místním vývojovém prostředí s nainstalovaným Azure CLI.

Poznámka

Použijte stejné názvy jako ve 2. části této série kurzů.

  1. Pomocí příkazu az acr create vytvořte registr kontejneru Azure.

    #!/bin/bash
    # Use the resource group that you created in part 2 of this tutorial series.
    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters.
    # If the name is already taken, you'll receive an error. Choose a different name and retry.
    REGISTRY_NAME='msdocscontainerregistryname'
    
    echo "Creating Azure Container Registry $REGISTRY_NAME..."
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard
    

    Ve výstupu JSON příkazu vyhledejte loginServer hodnotu. Tato hodnota představuje plně kvalifikovaný název registru (všechna malá písmena) a obsahuje název registru.

    Příklad výstupu:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Pokud používáte Azure CLI na místním počítači, spusťte příkaz az acr login a přihlaste se k registru kontejneru.

    az acr login -n $REGISTRY_NAME
    

    Parametr -n přijímá buď krátký název registru (například msdocscontainerregistryname), nebo plně kvalifikovaný název registru (msdocscontainerregistryname.azurecr.io). Příkaz ověří Docker pomocí Azure Container Registry pomocí vašich přihlašovacích údajů Azure CLI.

    Očekávaný výstup:

    Login Succeeded
    

    Poznámka

    Pokud používáte Azure Cloud Shell, nemusíte příkaz spouštětaz acr login, protože relace Cloud Shell automaticky zpracovává ověřování.

Vytvoření image ve službě Azure Container Registry

Image kontejneru můžete vygenerovat přímo v Azure prostřednictvím různých přístupů:

  • Azure Cloud Shell umožňuje sestavit image zcela v cloudu nezávisle na místním prostředí.
  • Alternativně můžete použít VS Code nebo Azure CLI k vytvoření image v Azure z místního nastavení, aniž byste museli Docker spouštět místně.

Příkazy Azure CLI můžete spustit v místním vývojovém prostředí pomocí Azure CLI nainstalovaného nebo v Azure Cloud Shell.

  1. V konzole přejděte do kořenové složky pro klonované úložiště z části 2 této série kurzů.

  2. Sestavte image kontejneru pomocí příkazu az acr build .

    Místní vývoj:

    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
    

    Azure Cloud Shell:

    Pokud používáte Azure Cloud Shell, místo místní cesty zadejte adresu URL úložiště GitHub (.):

    # For Django sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git
    
    # For Flask sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
    

    Posledním argumentem (. nebo adresou URL Gitu) je kontext sestavení Dockeru – adresář obsahující soubory Dockerfile a aplikace, které Docker používá k sestavení image.

  3. Pomocí příkazu az acr repository list ověřte, že image kontejneru byla vytvořena.

    az acr repository list -n $REGISTRY_NAME
    

    Očekávaný výstup:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Další krok