Udostępnij za pośrednictwem


Tworzenie i wdrażanie aplikacji internetowej w języku Python przy użyciu usług Azure Container Apps i PostgreSQL

Ten artykuł jest częścią samouczka dotyczącego konteneryzowania i wdrażania aplikacji internetowej w języku Python w usłudze Azure Container Apps. Usługa Container Apps umożliwia wdrażanie konteneryzowanych aplikacji bez zarządzania złożoną infrastrukturą.

W tej części samouczka dowiesz się, jak konteneryzować i wdrażać przykładową aplikację internetową w języku Python (Django lub Flask). W szczególności tworzysz obraz kontenera w chmurze i wdrażasz go w usłudze Azure Container Apps. Definiujesz zmienne środowiskowe, które umożliwiają aplikacji kontenera nawiązywanie połączenia z wystąpieniem usługi Azure Database for PostgreSQL — serwer elastyczny , w którym przykładowa aplikacja przechowuje dane.

Ten diagram usługi przedstawia składniki opisane w tym artykule: kompilowanie i wdrażanie obrazu kontenera.

A screenshot of the services in the Tutorial - Deploy a Python App on Azure Container Apps. Section highlighted is what is covered in this article.Zrzut ekranu usług w samouczku — wdrażanie aplikacji w języku Python w usłudze Azure Container Apps. Sekcja została wyróżniona w tym artykule.

Warunki wstępne

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto .

Polecenia interfejsu wiersza polecenia platformy Azure można uruchamiać w usłudze Azure Cloud Shell lub na stacji roboczej z zainstalowanym interfejsem wiersza polecenia platformy Azure.

Jeśli korzystasz lokalnie, wykonaj następujące kroki, aby zalogować się i zainstalować niezbędne moduły na potrzeby tego samouczka.

  1. Zaloguj się do platformy Azure i w razie potrzeby uwierzytelnij się:

    az login
    
  2. Upewnij się, że używasz najnowszej wersji interfejsu wiersza polecenia platformy Azure:

    az upgrade
    
  3. Zainstaluj lub uaktualnij containerapp i rdbms-connect rozszerzenia interfejsu wiersza polecenia platformy Azure za pomocą polecenia az extension add.

    az extension add --name containerapp --upgrade
    az extension add --name rdbms-connect --upgrade
    

    Uwaga

    Aby wyświetlić listę rozszerzeń zainstalowanych w systemie, możesz użyć polecenia az extension list. Na przykład

    az extension list --query [].name --output tsv
    

Pobieranie przykładowej aplikacji

Rozwidlenie i sklonowanie przykładowego kodu do środowiska deweloperskiego.

  1. Przejdź do repozytorium GitHub przykładowej aplikacji (Django lub Flask) i wybierz pozycję Rozwidlenie.

    Wykonaj kroki, aby rozwidlić katalog na koncie usługi GitHub. Możesz również pobrać repozytorium kodu bezpośrednio na komputer lokalny bez rozwidlenia lub konta usługi GitHub, jednak nie będzie można skonfigurować ciągłej integracji/ciągłego wdrażania omówionych w dalszej części tego samouczka.

  2. Użyj polecenia git clone, aby sklonować rozwidlenie repozytorium do folderu python-container:

    # Django
    git clone https://github.com/$USERNAME/msdocs-python-django-azure-container-apps.git python-container
    
    # Flask
    # git clone https://github.com/$USERNAME/msdocs-python-flask-azure-container-apps.git python-container
    
  3. Zmień katalog.

    cd python-container
    

Tworzenie obrazu kontenera na podstawie kodu aplikacji internetowej

Po wykonaniu tych kroków będziesz mieć usługę Azure Container Registry zawierającą obraz kontenera platformy Docker utworzony na podstawie przykładowego kodu.

  1. Utwórz grupę zasobów za pomocą polecenia az group create.

    az group create \
        --name pythoncontainer-rg \
        --location <location>
    

    <location> jest jedną z wartości nazwa lokalizacji platformy Azure z danych wyjściowych polecenia az account list-locations -o table.

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

    az acr create \
        --resource-group pythoncontainer-rg \
        --name <registry-name> \
        --sku Basic \
        --admin-enabled
    

    <Nazwa> rejestru musi być unikatowa na platformie Azure i zawierać od 5 do 50 znaków alfanumerycznych.

  3. Zaloguj się do rejestru przy użyciu polecenia az acr login .

    az acr login --name <registry-name>
    

    Polecenie dodaje "azurecr.io" do nazwy, aby utworzyć w pełni kwalifikowaną nazwę rejestru. W przypadku powodzenia zostanie wyświetlony komunikat "Logowanie powiodło się". Jeśli uzyskujesz dostęp do rejestru z subskrypcji innej niż ta, w której utworzono rejestr, użyj przełącznika --suffix .

    Jeśli logowanie się nie powiedzie, upewnij się, że serwis Docker jest uruchomiony w systemie.

  4. Skompiluj obraz za pomocą polecenia az acr build .

    az acr build \
        --registry <registry-name> \
        --resource-group pythoncontainer-rg \
        --image pythoncontainer:latest .
    

    Należy pamiętać, że:

    • Kropka (".") na końcu polecenia wskazuje lokalizację kodu źródłowego do skompilowania. Jeśli nie uruchamiasz tego polecenia w przykładowym katalogu głównym aplikacji, określ ścieżkę do kodu.

    • Jeśli używasz polecenia w usłudze Azure Cloud Shell, najpierw użyj git clone, aby najpierw ściągnąć repozytorium do środowiska usługi Cloud Shell i zmienić katalog na katalog główny projektu, aby kropka (".") została prawidłowo zinterpretowana.

    • Jeśli pominiesz -t opcję (taką samą jak --image), polecenie spowoduje kolejkowanie kompilacji kontekstu lokalnego bez wypychania jej do rejestru. Kompilowanie bez wypychania może być przydatne, aby sprawdzić, czy kompilacje obrazu.

  5. Upewnij się, że obraz kontenera został utworzony za pomocą polecenia az acr repository list .

    az acr repository list --name <registry-name>
    

Uwaga

Kroki opisane w tej sekcji umożliwiają utworzenie rejestru kontenerów w warstwie usługi Podstawowa. Ta warstwa jest zoptymalizowana pod kątem kosztów z zestawem funkcji i przepływnością przeznaczoną dla scenariuszy deweloperskich i jest odpowiednia dla wymagań tego samouczka. W scenariuszach produkcyjnych najprawdopodobniej użyjesz warstwy usługi Standardowa lub Premium. Te warstwy zapewniają ulepszone poziomy magazynowania i przepływności. Aby dowiedzieć się więcej, zobacz poziomy usługi Azure Container Registry. Aby uzyskać informacje o cenach, zobacz cennik usługi Azure Container Registry.

Tworzenie wystąpienia serwera elastycznego PostgreSQL

Przykładowa aplikacja (Django lub Flask) przechowuje dane przeglądu restauracji w bazie danych PostgreSQL. W tych krokach utworzysz serwer, który będzie zawierać bazę danych.

  1. Użyj polecenia az postgres flexible-server create, aby utworzyć serwer PostgreSQL na platformie Azure. Wykonanie tego polecenia przez kilka minut nie jest niczym niezwykłym.

    az postgres flexible-server create \
       --resource-group pythoncontainer-rg \
       --name <postgres-server-name>  \
       --location <location> \
       --admin-user demoadmin \
       --admin-password <admin-password> \
       --active-directory-auth Enabled \
       --tier burstable \
       --sku-name standard_b1ms \
       --public-access 0.0.0.0 
    
    • "pythoncontainer-rg": nazwa grupy zasobów używana w tym samouczku. Jeśli użyto innej nazwy, zmień tę wartość.

    • <nazwa serwera postgres-server>: nazwa serwera bazy danych PostgreSQL. Ta nazwa musi być unikatowa na całej platformie Azure. Punkt końcowy serwera to "https://< postgres-server-name.postgres.database.azure.com>". Dozwolone znaki to "A"-"Z", "0"-"9" i "-".

    • <lokalizacji>: użyj tej samej lokalizacji używanej dla aplikacji internetowej. <location> jest jedną z wartości nazwa lokalizacji platformy Azure z danych wyjściowych polecenia az account list-locations -o table.

    • <admin-username>: nazwa użytkownika konta administratora. Nie może to być "azure_superuser", "admin", "administrator", "root", "guest" lub "public". W tym samouczku użyj polecenia "demoadmin".

    • <hasło administratora>: hasło użytkownika administratora. Musi zawierać od 8 do 128 znaków z trzech z następujących kategorii: wielkie litery angielskie, małe litery angielskie, cyfry i znaki inne niż alfanumeryczne.

      Ważne

      Podczas tworzenia nazw użytkowników lub haseł nie należy używać znaku "$". Później utworzysz zmienne środowiskowe z tymi wartościami, w których znak "$" ma specjalne znaczenie w kontenerze systemu Linux używanym do uruchamiania aplikacji języka Python.

    • --active-directory-auth: Określa, czy na serwerze PostreSQL jest włączone uwierzytelnianie Microsoft Entra ID. Ustaw wartość Enabled.

    • --sku-name: nazwa warstwy cenowej i konfiguracji obliczeniowej, na przykład "Standard_B1ms". Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Database for PostgreSQL. Aby wyświetlić listę dostępnych jednostek SKU, użyj polecenia az postgres flexible-server list-skus --location <location>.

    • --public-access: Użyj "0.0.0.0", co umożliwia publiczny dostęp do serwera z dowolnej usługi Azure, takiej jak Container Apps.

    Uwaga

    Jeśli planujesz pracować z serwerem PostgreSQL z lokalnej stacji roboczej za pomocą narzędzi, musisz dodać regułę zapory dla adresu IP swojej stacji roboczej za pomocą polecenia az postgres flexible-server firewall-rule create.

  2. Użyj polecenia az ad signed-in-user show, aby uzyskać identyfikator obiektu twojego konta użytkownika, który posłuży w następnym poleceniu.

    az ad signed-in-user show --query id --output tsv
    
  3. Użyj polecenia az postgres flexible-server ad-admin create, aby dodać konto użytkownika jako administrator usługi Microsoft Entra na serwerze PostgreSQL.

    az postgres flexible-server ad-admin create \
       --resource-group pythoncontainer-rg \
       --server-name <postgres-server-name>  \
       --display-name <your-email-address> \
       --object-id <your-account-object-id>
    

    W przypadku identyfikatora obiektu konta użyj wartości podanej w poprzednim kroku.

Uwaga

Kroki opisane w tej sekcji umożliwiają utworzenie serwera PostgreSQL z pojedynczym vCore i ograniczoną pamięcią w warstwie cenowej Burstable. Warstwa "Burstable" to tańsza opcja dla obciążeń, które nie potrzebują ciągłego pełnego wykorzystania CPU i odpowiadają wymaganiom tego samouczka. W przypadku obciążeń produkcyjnych można przeprowadzić uaktualnienie do poziomu cenowego Ogólnego przeznaczenia lub Zoptymalizowanego pod kątem pamięci. Te warstwy zapewniają większą wydajność, ale zwiększają koszty. Aby dowiedzieć się więcej, zobacz Opcje obliczeń w usłudze Azure Database for PostgreSQL — serwer elastyczny. Aby uzyskać informacje o cenach, zobacz cennik usługi Azure Database for PostgreSQL.

Tworzenie bazy danych na serwerze

Na tym etapie masz serwer PostgreSQL. W tej sekcji utworzysz bazę danych na serwerze.

Użyj polecenia az postgres flexible-server db create, aby utworzyć bazę danych o nazwie restaurants_reviews.

az postgres flexible-server db create \
   --resource-group pythoncontainer-rg \
   --server-name <postgres-server-name> \
   --database-name restaurants_reviews

Gdzie:

  • "pythoncontainer-rg": nazwa grupy zasobów używana w tym samouczku. Jeśli użyto innej nazwy, zmień tę wartość.
  • <postgres-server-name>: nazwa serwera PostgreSQL.

Możesz również użyć polecenia az postgres flexible-server connect , aby nawiązać połączenie z bazą danych, a następnie pracować z poleceniami psql . Podczas pracy z narzędziem psql często łatwiej jest używać usługi Azure Cloud Shell , ponieważ wszystkie zależności są uwzględniane w powłoce.

Możesz również nawiązać połączenie z serwerem elastycznym usługi Azure PostgreSQL i utworzyć bazę danych przy użyciu psql lub środowiska IDE obsługującego bazę danych PostgreSQL, na przykład Azure Data Studio. Aby uzyskać instrukcje dotyczące używania narzędzia psql, zobacz Konfigurowanie tożsamości zarządzanej w bazie danych postgresql.

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

Utwórz tożsamość zarządzaną przypisaną przez użytkownika. Ta tożsamość zarządzana będzie używana jako tożsamość aplikacji kontenera podczas uruchamiania na platformie Azure.

Uwaga

Aby utworzyć zarządzaną tożsamość przypisaną użytkownikowi, twoje konto musi mieć przypisaną rolę współautora tożsamości zarządzanej .

Użyj polecenia az identity create, aby utworzyć przypisaną przez użytkownika zarządzaną tożsamość.

az identity create --name my-ua-managed-id --resource-group pythoncontainer-rg

Konfigurowanie tożsamości zarządzanej w bazie danych PostgreSQL

Skonfiguruj tożsamość zarządzaną jako rolę na serwerze PostgreSQL, a następnie przyznaj jej niezbędne uprawnienia dla bazy danych restaurants_reviews. Niezależnie od tego, czy używasz Azure CLI, czy narzędzia psql, musisz połączyć się z serwerem Azure PostgreSQL przy użyciu użytkownika, który jest skonfigurowany jako administrator Microsoft Entra na Twoim wystąpieniu serwera. Tylko konta Microsoft Entra skonfigurowane jako administrator PostgreSQL mogą konfigurować zarządzane tożsamości i inne role administratora Microsoft na Twoim serwerze.

  1. Pobierz token dostępu dla konta platformy Azure za pomocą polecenia az account get-access-token. Token dostępu jest używany w poniższych krokach.

    az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken
    

    Zwrócony token jest długi. Ustaw jej wartość w zmiennej środowiskowej do użycia w poleceniach w następującym kroku:

    MY_ACCESS_TOKEN=<your-access-token>
    
  2. Dodaj zarządzaną przez użytkownika tożsamość jako rolę bazy danych na serwerze PostgreSQL za pomocą polecenia az postgres flexible-server execute.

    az postgres flexible-server execute \
        --name <postgres-server-name> \
        --database-name postgres \
        --querytext "select * from pgaadauth_create_principal('"my-ua-managed-id"', false, false);select * from pgaadauth_list_principals(false);" \
        --admin-user <your-Azure-account-email> \
        --admin-password $MY_ACCESS_TOKEN
    
    • Jeśli użyto innej nazwy tożsamości zarządzanej, zastąp my-ua-managed-id w poleceniu pgaadauth_create_principal nazwą tożsamości zarządzanej.

    • Dla wartości --admin-user użyj adresu e-mail konta platformy Azure.

    • Dla wartości --admin-password użyj tokenu dostępu wygenerowanego przez poprzednie polecenie, bez użycia cudzysłowów.

    • Upewnij się, że nazwa bazy danych to postgres.

    Uwaga

    Jeśli używasz polecenia az postgres flexible-server execute na lokalnej stacji roboczej, upewnij się, że dodano regułę zapory dla adresu IP stacji roboczej. Regułę można dodać za pomocą polecenia az postgres flexible-server firewall-rule create. To samo wymaganie istnieje również dla polecenia w następnym kroku.

  3. Udziel tożsamości zarządzanej przypisanej przez użytkownika niezbędnych uprawnień do bazy danych restaurants_reviews, używając poniższego polecenia az postgres flexible-server execute.

    az postgres flexible-server execute \
        --name <postgres-server-name> \
        --database-name restaurants_reviews \
        --querytext "GRANT CONNECT ON DATABASE restaurants_reviews TO \"my-ua-managed-id\";GRANT USAGE ON SCHEMA public TO \"my-ua-managed-id\";GRANT CREATE ON SCHEMA public TO \"my-ua-managed-id\";GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"my-ua-managed-id\";ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO \"my-ua-managed-id\";" \
        --admin-user <your-Azure-account-email> \
        --admin-password $MY_ACCESS_TOKEN
    
    • Jeśli użyto innej nazwy tożsamości zarządzanej, zastąp wszystkie wystąpienia my-ua-managed-id w poleceniu nazwą tożsamości zarządzanej. W łańcuchu zapytania znajduje się pięć wystąpień.

    • Dla wartości --admin-user użyj adresu e-mail konta platformy Azure.

    • W przypadku wartości --admin-password użyj danych wyjściowych tokenu dostępu wcześniej, bez cudzysłów.

    • Upewnij się, że nazwa bazy danych to restaurants_reviews.

    Powyższe polecenie interfejsu wiersza polecenia platformy Azure nawiązuje połączenie z bazą danych restaurants_reviews na serwerze i wyświetla następujące polecenia SQL:

    GRANT CONNECT ON DATABASE restaurants_reviews TO "my-ua-managed-id";
    GRANT USAGE ON SCHEMA public TO "my-ua-managed-id";
    GRANT CREATE ON SCHEMA public TO "my-ua-managed-id";
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "my-ua-managed-id";
    ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "my-ua-managed-id";
    

Wdrażanie aplikacji internetowej w usłudze Container Apps

Aplikacje kontenerów są wdrażane w środowiskach usługi Container Apps, które działają jako bezpieczna granica. W poniższych krokach utworzysz środowisko, kontener wewnątrz środowiska i skonfigurujesz kontener tak, aby witryna internetowa był widoczna zewnętrznie.

Te kroki wymagają rozszerzenia Azure Container Apps .

  1. Utwórz środowisko usługi Container Apps za pomocą polecenia az containerapp env create .

    az containerapp env create \
    --name python-container-env \
    --resource-group pythoncontainer-rg \
    --location <location>
    

    <location> jest jedną z wartości nazwa lokalizacji platformy Azure z danych wyjściowych polecenia az account list-locations -o table.

  2. Pobierz dane logowania dla usługi Azure Container Registry za pomocą polecenia az acr credential show.

    az acr credential show -n <registry-name>
    

    Używasz nazwy użytkownika i jednego z haseł zwracanych z danych wyjściowych polecenia podczas tworzenia aplikacji kontenera w kroku 5.

  3. Użyj polecenia az identity show, aby uzyskać identyfikator klienta i identyfikator zasobu przypisanej przez użytkownika tożsamości zarządzanej.

    az identity show --name my-ua-managed-id --resource-group pythoncontainer-rg --query "[clientId, id]" --output tsv
    

    Używasz wartości identyfikatora klienta (GUID) oraz identyfikatora zasobu wygenerowanego przez polecenie podczas tworzenia aplikacji kontenerowej w kroku 5. Identyfikator zasobu ma następującą postać: /subscriptions/<subscription-id>/resourcegroups/pythoncontainer-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-ua-managed-id

  4. Uruchom następujące polecenie, aby wygenerować wartość klucza tajnego.

    python -c 'import secrets; print(secrets.token_hex())'
    

    Wartość klucza tajnego służy do ustawiania zmiennej środowiskowej podczas tworzenia aplikacji kontenera w kroku 5.

    Uwaga

    Polecenie pokazane jest dla powłoki Bash. W zależności od środowiska może być konieczne wywołanie języka Python przy użyciu python3. W systemie Windows należy ująć polecenie w parametrze -c w cudzysłowy, a nie w cudzysłowach pojedynczych. Może być również konieczne wywołanie języka Python przy użyciu py lub py -3 w zależności od środowiska.

  5. Utwórz aplikację kontenera w środowisku za pomocą polecenia az containerapp create .

    az containerapp create \
    --name python-container-app \
    --resource-group pythoncontainer-rg \
    --image <registry-name>.azurecr.io/pythoncontainer:latest \
    --environment python-container-env \
    --ingress external \
    --target-port <5000 for Flask or 8000 for Django> \
    --registry-server <registry-name>.azurecr.io \
    --registry-username <registry-username> \
    --registry-password <registry-password> \
    --user-assigned <managed-identity-resource-id> \
    --query properties.configuration.ingress.fqdn \
    --env-vars DBHOST="<postgres-server-name>" \
    DBNAME="restaurants_reviews" \
    DBUSER="my-ua-managed-id" \
    RUNNING_IN_PRODUCTION="1" \
    AZURE_CLIENT_ID="<managed-identity-client-id>" \
    AZURE_SECRET_KEY="<your-secret-key>"
    

    Upewnij się, że zastąpisz wszystkie wartości w nawiasach kątowych wartościami, których używasz w tym samouczku. Należy pamiętać, że nazwa aplikacji kontenera musi być unikatowa na platformie Azure.

    Wartość parametru --env-vars to ciąg składający się z wartości rozdzielanych spacjami w formacie key="value" z następującymi wartościami:

    • DBHOST="<postgres-server-name>"
    • DBNAME="restaurants_reviews"
    • DBUSER="my-ua-managed-id"
    • RUNNING_IN_PRODUCTION="1"
    • AZURE_CLIENT_ID="<managed-identity-client-id>"
    • AZURE_SECRET_KEY="<klucz-tajny>"

    Wartość DBUSER to nazwa zarządzanej tożsamości przypisanej użytkownikowi.

    Wartość AZURE_CLIENT_ID to identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika. Ta wartość została uzyskana w poprzednim kroku.

    Wartość AZURE_SECRET_KEY to wartość klucza tajnego wygenerowana w poprzednim kroku.

  6. Tylko w przypadku platformy Django należy przeprowadzić migrację i utworzyć schemat bazy danych. (W przykładowej aplikacji Platformy Flask jest ona wykonywana automatycznie i można pominąć ten krok).

    Połącz się za pomocą polecenia az containerapp exec :

        az containerapp exec \
            --name python-container-app \
            --resource-group pythoncontainer-rg
    

    Następnie w wierszu polecenia powłoki wpisz python manage.py migrate.

    Nie musisz migrować wersji kontenera.

  7. Przetestuj witrynę internetową.

    Wprowadzone az containerapp create wcześniej polecenie zwraca adres URL aplikacji, którego można użyć do przeglądania aplikacji. Adres URL kończy się na "azurecontainerapps.io". Przejdź do adresu URL w przeglądarce. Alternatywnie możesz użyć polecenia az containerapp browse .

Oto przykład przykładowej witryny internetowej po dodaniu restauracji i dwóch recenzji.

Screenshot showing an example of the sample website built in this tutorial.Zrzut ekranu przedstawiający przykład przykładowej witryny internetowej utworzonej w tym samouczku.

Rozwiązywanie problemów z wdrażaniem

  • Nie pamiętasz adresu URL aplikacji, aby uzyskać dostęp do witryny internetowej.

    • W witrynie Azure Portal przejdź do strony Przegląd aplikacji kontenera i wyszukaj adres URL aplikacji.
    • W programie VS Code przejdź do widoku platformy Azure (Ctrl+Shift+A) i rozwiń subskrypcję, w której pracujesz. Rozwiń węzeł Container Apps, a następnie rozwiń środowisko zarządzane, a następnie kliknij prawym przyciskiem myszy pozycję python-container-app i wybierz pozycję Przeglądaj. Otwiera przeglądarkę z adresem URL aplikacji .
    • W interfejsie wiersza polecenia platformy Azure użyj polecenia az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdn.
  • W programie VS Code zadanie Kompilowanie obrazu na platformie Azure zwraca błąd.

    • Jeśli zostanie wyświetlony komunikat "Błąd: nie można pobrać kontekstu. Sprawdź, czy adres URL jest niepoprawny" w oknie Dane wyjściowe programu VS Code, a następnie odśwież rejestr w rozszerzeniu platformy Docker. Aby odświeżyć, wybierz rozszerzenie platformy Docker, przejdź do sekcji Rejestry, znajdź rejestr i wybierz go.
    • Jeśli ponownie uruchomisz obraz kompilacji na platformie Azure , sprawdź, czy rejestr z poprzedniego uruchomienia istnieje, a jeśli tak, użyj go.
  • W witrynie Azure Portal podczas tworzenia aplikacji kontenera zostanie wyświetlony błąd dostępu zawierający komunikat "Nie można uzyskać dostępu do usługi ACR "<name.azurecr.io>".

    • Ten błąd występuje, gdy poświadczenia administratora w usłudze ACR są wyłączone. Aby sprawdzić stan administratora w portalu, przejdź do usługi Azure Container Registry, wybierz zasób Klucze dostępu i upewnij się, że użytkownik administracyjny jest włączony.
  • Obraz kontenera nie jest wyświetlany w usłudze Azure Container Registry.

    • Sprawdź dane wyjściowe polecenia interfejsu wiersza polecenia platformy Azure lub dane wyjściowe programu VS Code i poszukaj komunikatów, aby potwierdzić powodzenie.
    • Sprawdź, czy nazwa rejestru została poprawnie określona w poleceniu kompilacji za pomocą interfejsu wiersza polecenia platformy Azure lub w wierszach zadań programu VS Code.
    • Upewnij się, że poświadczenia nie wygasły. Na przykład w programie VS Code znajdź rejestr docelowy w rozszerzeniu platformy Docker i odśwież. W interfejsie wiersza polecenia platformy Azure uruchom polecenie az login.
  • Witryna internetowa zwraca wartość "Nieprawidłowe żądanie (400)".

    • Sprawdź zmienne środowiskowe bazy danych PostgreSQL przekazane do kontenera. Błąd 400 często wskazuje, że kod języka Python nie może nawiązać połączenia z wystąpieniem bazy danych PostgreSQL.
    • Przykładowy kod używany w tym samouczku sprawdza istnienie zmiennej środowiskowej RUNNING_IN_PRODUCTIONkontenera , którą można ustawić na dowolną wartość, taką jak "1".
  • Witryna internetowa zwraca komunikat "Nie znaleziono (404)".

    • Sprawdź adres URL aplikacji na stronie Przegląd kontenera. Jeśli adres URL aplikacji zawiera słowo "internal", ruch przychodzący nie jest poprawnie ustawiony.
    • Sprawdź ruch przychodzący kontenera. Na przykład w witrynie Azure Portal przejdź do zasobu Ruchu przychodzącego kontenera i upewnij się, że ruch przychodzący HTTP jest włączony, a opcja Akceptowanie ruchu z dowolnego miejsca jest zaznaczona.
  • Witryna internetowa nie jest uruchamiana, widzisz komunikat "limit czasu strumienia" lub nie jest zwracany żaden komunikat.

    • Sprawdź dzienniki.
      • W witrynie Azure Portal przejdź do zasobu zarządzania poprawkami aplikacji kontenera i sprawdź stan aprowizacji kontenera.
        • Jeśli "Aprowizowanie", poczekaj na zakończenie aprowizacji.
        • Jeśli "Niepowodzenie", wybierz poprawkę i wyświetl dzienniki konsoli. Wybierz kolejność kolumn, aby wyświetlić wartości "Czas wygenerowany", "Stream_s" i "Log_s". Posortuj dzienniki według najnowszych elementów i poszukaj komunikatów stderr i stdout języka Python w kolumnie "Stream_s". Dane wyjściowe "print" języka Python będą komunikatami stdout .
      • Za pomocą interfejsu wiersza polecenia platformy Azure użyj polecenia az containerapp logs show .
    • Jeśli używasz struktury Django, sprawdź, czy tabele restaurants_reviews istnieją w bazie danych. Jeśli nie, użyj konsoli, aby uzyskać dostęp do kontenera i uruchomić polecenie python manage.py migrate.

Następny krok