Tworzenie konteneryzowanej aplikacji internetowej w języku Python na platformie Azure

Ten artykuł jest trzecią częścią pięcioczęściowej serii samouczków na temat konteneryzacji i wdrażania internetowej aplikacji w języku Python w usłudze Azure App Service. W części 2 utworzono i uruchomiono lokalnie obraz kontenera. W tym artykule utworzysz tę samą aplikację internetową Python bezpośrednio w Azure Container Registry bez lokalnego instalowania platformy Docker. Kompilowanie obrazu w Azure jest zwykle szybsze i łatwiejsze niż kompilowanie lokalnie, a następnie wypychanie go do rejestru. Tworzenie obrazów opartych na chmurze eliminuje również konieczność działania platformy Docker w środowisku projektowym.

Usługa Azure App Service umożliwia wdrażanie i uruchamianie aplikacji internetowych w kontenerach przy użyciu potoków CI/CD z platform takich jak Docker Hub, Azure Container Registry i Azure DevOps. Gdy obraz Dockera znajduje się w usłudze Azure Container Registry, możesz wdrożyć go do usługi Azure App Service.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że ukończono część 2 tej serii samouczków, która obejmuje:

  • Klonowanie przykładowego repozytorium (Django lub Flask).
  • Tworzenie grupy zasobów dla zasobów Azure.
  • Uruchamianie aplikacji konteneryzowanej lokalnie w celu sprawdzenia, czy działa.

Potrzebne są również następujące elementy:

Ważne

Przykładowy plik Dockerfile używa python:3.8-slim jako obrazu podstawowego. Python 3.8 osiągnął koniec użytkowania w październiku 2024 r. i nie otrzymuje już aktualizacji zabezpieczeń. Zaktualizuj plik Dockerfile tak, aby używał python:3.12-slim lub python:3.13-slim na potrzeby wdrożeń produkcyjnych.

Ten diagram usługi wyróżnia składniki omówione w tym artykule.

Zrzut ekranu usług używanych w samouczku — konteneryzowana aplikacja języka Python na platformie Azure z wyróżnioną ścieżką kompilacji w chmurze.

Tworzenie usługi Azure Container Registry

Jeśli masz już Azure Container Registry, pomiń ten krok i przejdź do następnego kroku. W przeciwnym razie utwórz nowy Azure Container Registry przy użyciu Azure CLI.

Polecenia Azure CLI można uruchamiać w Azure Cloud Shell lub w lokalnym środowisku projektowym z zainstalowanym Azure CLI.

Notatka

Użyj tych samych nazw co w części 2 tej serii samouczków.

  1. Utwórz rejestr kontenerów Azure za pomocą polecenia az acr create.

    #!/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
    

    W danych wyjściowych polecenia JSON znajdź wartość loginServer. Ta wartość reprezentuje w pełni kwalifikowaną nazwę rejestru (wszystkie małe litery) i zawiera nazwę rejestru.

    Przykładowe dane wyjściowe:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Jeśli używasz Azure CLI na komputerze lokalnym, uruchom polecenie az acr login, aby zalogować się do rejestru kontenerów.

    az acr login -n $REGISTRY_NAME
    

    Parametr -n akceptuje krótką nazwę rejestru (na przykład msdocscontainerregistryname) lub w pełni kwalifikowaną nazwę rejestru (msdocscontainerregistryname.azurecr.io). Polecenie uwierzytelnia Dockera w usłudze Azure Container Registry przy użyciu poświadczeń Azure CLI.

    Oczekiwane dane wyjściowe:

    Login Succeeded
    

    Notatka

    Jeśli używasz Azure Cloud Shell, nie musisz uruchamiać az acr login polecenia, ponieważ sesja Cloud Shell automatycznie obsługuje uwierzytelnianie.

Tworzenie obrazu w usłudze Azure Container Registry

Obraz kontenera można wygenerować bezpośrednio na platformie Azure za pomocą różnych podejść:

  • Azure Cloud Shell umożliwia konstruowanie obrazu w całości w chmurze, niezależnie od środowiska lokalnego.
  • Alternatywnie możesz użyć programu VS Code lub Azure CLI, aby utworzyć obraz w Azure z lokalnej konfiguracji bez konieczności uruchamiania platformy Docker lokalnie.

Możesz uruchamiać polecenia Azure CLI w lokalnym środowisku programistycznym za pomocą zainstalowanego narzędzia Azure CLI lub w Azure Cloud Shell.

  1. W konsoli przejdź do głównego folderu sklonowanego repozytorium z części 2 tej serii samouczków.

  2. Skompiluj obraz kontenera przy użyciu polecenia az acr build .

    Programowanie lokalne:

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

    Azure Cloud Shell:

    Jeśli używasz Azure Cloud Shell, określ adres URL repozytorium GitHub zamiast ścieżki lokalnej (.):

    # 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
    

    Ostatnim argumentem (. lub adresem URL usługi Git) jest kontekst kompilacji platformy Docker — katalog zawierający pliki dockerfile i pliki aplikacji używane przez platformę Docker do skompilowania obrazu.

  3. Upewnij się, że obraz kontenera został utworzony przy użyciu polecenia az acr repository list .

    az acr repository list -n $REGISTRY_NAME
    

    Oczekiwane dane wyjściowe:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Następny krok