Azure'da kapsayıcılı Python web uygulaması oluşturma

Bu makale, bir Python web uygulamasını kapsayıcıya alma ve Azure App Service'ye dağıtma hakkında 5 bölümden oluşan öğretici serisinin 3. bölümüdür. 2. bölümde kapsayıcı görüntüsünü yerel olarak oluşturup çalıştırmıştınız. Bu makalede, Docker'ı yerel olarak yüklemeden aynı Python web uygulamasını doğrudan Azure Container Registry'de derleyebilirsiniz. Görüntüyü Azure'de derlemek, yerel olarak derlemekten ve ardından bir kayıt defterine göndermekten daha hızlı ve kolaydır. Bulut tabanlı görüntü oluşturma, Docker'ın geliştirme ortamınızda çalışması gereksinimini de ortadan kaldırır.

Azure App Service, Docker Hub, Azure Container Registry ve Azure DevOps gibi platformlardan CI/CD işlem hatlarını kullanarak kapsayıcılı web uygulamaları dağıtmanıza ve çalıştırmanıza olanak tanır. Docker görüntüsü Azure Container Registry’ye yüklendikten sonra, onu Azure App Service’e dağıtabilirsiniz.

Prerequisites

Başlamadan önce , bu öğretici serisinin aşağıdakileri kapsayan 2. bölümünü tamamladığınızdan emin olun:

  • Örnek depoyu kopyalama (Django veya Flask).
  • Azure kaynaklar için kaynak grubu oluşturma.
  • Kapsayıcılı uygulamayı yerel olarak çalıştırarak çalıştığını doğrulayın.

Ayrıca şunları yapmanız gerekir:

Önemli

Örnek Dockerfile temel görüntü olarak kullanır python:3.8-slim . Python 3.8, Ekim 2024'te kullanım ömrü sonuna ulaştı ve artık güvenlik güncelleştirmelerini almıyor. Dockerfile'ınızı, üretim dağıtımları için python:3.12-slim veya python:3.13-slim kullanacak şekilde güncelleyin.

Bu hizmet diyagramı, bu makalede ele alınan bileşenleri vurgular.

Azure'daki Öğretici - Kapsayıcılı Python Uygulamasında kullanılan hizmetlerin ekran görüntüsü ve bulut içinde derleme yolu vurgulanmış.

Bir Azure Container Registry oluşturma

Zaten bir Azure Container Registry varsa, bu adımı atlayın ve sonraki adıma geçin. Aksi takdirde, Azure CLI kullanarak yeni bir Azure Container Registry oluşturun.

Azure CLI komutları Azure Cloud Shell veya Azure CLIyüklü olarak yerel geliştirme ortamınızda çalıştırabilirsiniz.

Not

Bu kılavuz serisinin ikinci bölümündeki adları kullanın.

  1. az acr create komutunu kullanarak Azure kapsayıcı kayıt defteri oluşturun.

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

    Komutun JSON çıkışında değerini bulun loginServer . Bu değer tam kayıt defteri adını (tümü küçük harfle) temsil eder ve kayıt defteri adını içerir.

    Örnek çıkış:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Yerel makinenizde Azure CLI kullanıyorsanız az acr login komutunu çalıştırarak kapsayıcı kayıt defterinde oturum açın.

    az acr login -n $REGISTRY_NAME
    

    -n parametresi kısa kayıt defteri adını (örneğin, msdocscontainerregistryname) veya tam kayıt defteri adını (msdocscontainerregistryname.azurecr.io) kabul eder. Komut, Azure CLI kimlik bilgilerinizi kullanarak Docker'ın kimliğini Azure Container Registry ile doğrular.

    Beklenen çıkış:

    Login Succeeded
    

    Not

    Azure Cloud Shell kullanıyorsanız, Cloud Shell oturumunuz kimlik doğrulamasını otomatik olarak işlediğinden az acr login komutunu çalıştırmanız gerekmez.

Azure Container Registry'de görüntü oluşturma

Kapsayıcı görüntüsünü çeşitli yaklaşımlarla doğrudan Azure'da oluşturabilirsiniz:

  • Azure Cloud Shell, görüntüyü yerel ortamınızdan bağımsız olarak tamamen bulutta oluşturmanıza olanak tanır.
  • Alternatif olarak, Docker'ın yerel olarak çalıştırılmasına gerek kalmadan görüntüyü yerel kurulumunuzdan Azure oluşturmak için VS Code veya Azure CLI kullanabilirsiniz.

Azure CLI komutlarını, yüklü Azure CLI veya Azure Cloud Shell kullanarak yerel geliştirme ortamınızda çalıştırabilirsiniz.

  1. Konsolunda, bu öğretici serisinin 2. bölümünden kopyalanmış deponuzun kök klasörüne gidin.

  2. az acr build komutunu kullanarak kapsayıcı görüntüsünü oluşturun.

    Yerel geliştirme:

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

    Azure Cloud Shell:

    Azure Cloud Shell kullanıyorsanız yerel yol (.) yerine GitHub depo URL'sini belirtin:

    # 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
    

    Son bağımsız değişken (. veya Git URL'si), Docker derleme bağlamıdır; Docker'ın görüntüyü oluşturmak için kullandığı Dockerfile ve uygulama dosyalarını içeren dizindir.

  3. az acr repository list komutunu kullanarak kapsayıcı görüntüsünün oluşturulduğunu onaylayın.

    az acr repository list -n $REGISTRY_NAME
    

    Beklenen çıkış:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Sonraki adım