Omówienie: wdrażanie aplikacji internetowej w języku Python w usłudze Azure Container Apps

W tym samouczku pokazano, jak konteneryzować aplikację internetową w języku Python i wdrożyć ją w usłudze Azure Container Apps. Przykładowa aplikacja internetowa zostanie konteneryzowana i obraz platformy Docker przechowywany w usłudze Azure Container Registry. Usługa Azure Container Apps jest skonfigurowana do ściągania obrazu platformy Docker z usługi Container Registry i tworzenia kontenera. Przykładowa aplikacja łączy się z usługą Azure Database for PostgreSQL w celu zademonstrowania komunikacji między usługą Container Apps i innymi zasobami platformy Azure.

Istnieje kilka opcji tworzenia i wdrażania natywnych i konteneryzowanych aplikacji internetowych w chmurze na platformie Azure. W tym samouczku opisano usługę Azure Container Apps. Usługa Container Apps jest odpowiednia do uruchamiania kontenerów ogólnego przeznaczenia, zwłaszcza w przypadku aplikacji obejmujących wiele mikrousług wdrożonych w kontenerach. W tym samouczku utworzysz jeden kontener. Aby wdrożyć aplikację internetową w języku Python jako kontener w usłudze aplikacja systemu Azure Service, zobacz Konteneryzowana aplikacja internetowa języka Python w usłudze App Service.

W tym samouczku wykonasz następujące elementy:

  • Skompiluj obraz platformy Docker z poziomu aplikacji internetowej w języku Python i zapisz obraz w usłudze Azure Container Registry.
  • Skonfiguruj usługę Azure Container Apps do hostowania obrazu platformy Docker.
  • Skonfiguruj akcję usługi GitHub, która aktualizuje kontener przy użyciu nowego obrazu platformy Docker wyzwalanego przez zmiany w repozytorium GitHub. Ten ostatni krok jest opcjonalny.

Po wykonaniu tego samouczka skonfigurujesz usługę Continuous Integration (CI) i continuous deployment (CD) aplikacji internetowej w języku Python na platformę Azure.

Przegląd funkcji obsługi klienta

Diagram usługi obsługujący ten samouczek przedstawia sposób użycia środowiska lokalnego, repozytoriów GitHub i usług platformy Azure w tym samouczku.

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

Składniki obsługujące ten samouczek i pokazane na powyższym diagramie to:

  • Azure Container Apps

    • Usługa Azure Container Apps umożliwia uruchamianie mikrousług i konteneryzowanych aplikacji na platformie bezserwerowej. Platforma bezserwerowa oznacza, że możesz korzystać z zalet uruchamiania kontenerów z minimalną konfiguracją. Dzięki usłudze Azure Container Apps aplikacje mogą dynamicznie skalować na podstawie cech, takich jak ruch HTTP, przetwarzanie sterowane zdarzeniami lub obciążenie procesora CPU lub pamięci.
    • Usługa Container Apps ściąga obrazy platformy Docker z usługi Azure Container Registry. Zmiany obrazów kontenerów wyzwalają aktualizację wdrożonego kontenera. Możesz również skonfigurować funkcję GitHub Actions do wyzwalania aktualizacji.
  • Azure Container Registry

    • Usługa Azure Container Registry umożliwia pracę z obrazami platformy Docker na platformie Azure. Ponieważ usługa Container Registry znajduje się blisko wdrożeń na platformie Azure, masz kontrolę nad dostępem, dzięki czemu możesz użyć grup i uprawnień firmy Microsoft do kontrolowania dostępu do obrazów platformy Docker.
    • W tym samouczku źródłem rejestru jest usługa Azure Container Registry, ale możesz również użyć usługi Docker Hub lub prywatnego rejestru z drobnymi modyfikacjami.
  • Azure Database for PostgreSQL

    • Przykładowy kod przechowuje dane aplikacji w bazie danych PostgreSQL.
    • Aplikacja kontenera łączy się z bazą danych PostgreSQL za pomocą zmiennych środowiskowych skonfigurowanych jawnie lub za pomocą Połączenie or usługi Platformy Azure.
  • GitHub

    • Przykładowy kod dla tego samouczka znajduje się w repozytorium GitHub, w którym rozwidniesz i sklonujesz lokalnie. Aby skonfigurować przepływ pracy ciągłej integracji/ciągłego wdrażania za pomocą funkcji GitHub Actions, potrzebne jest konto usługi GitHub.
    • Nadal możesz kontynuować pracę z tym samouczkiem bez konta usługi GitHub, działającego lokalnie lub w usłudze Azure Cloud Shell , aby skompilować obraz kontenera z repozytorium przykładowego kodu.

Poprawki i ciągła integracja/ciągłe wdrażanie

Aby wprowadzić zmiany kodu i wypchnąć je do kontenera, należy utworzyć nowy obraz platformy Docker ze zmianą. Następnie wypchniesz obraz do usługi Container Registry i utworzysz nową wersję aplikacji kontenera.

Aby zautomatyzować ten proces, opcjonalny krok w samouczku pokazuje, jak utworzyć potok ciągłej integracji i ciągłego dostarczania (CI/CD) za pomocą funkcji GitHub Actions. Potok automatycznie kompiluje i wdraża kod w aplikacji kontenera za każdym razem, gdy nowe zatwierdzenie zostanie wypchnięte do repozytorium GitHub.

Uwierzytelnianie i zabezpieczenia

W tym samouczku utworzysz obraz kontenera platformy Docker bezpośrednio na platformie Azure i wdrożysz go w usłudze Azure Container Apps. Usługa Container Apps działa w kontekście środowiska, które jest obsługiwane przez sieci wirtualne platformy Azure. Sieci wirtualne to podstawowy blok konstrukcyjny dla sieci prywatnej na platformie Azure. Usługa Container Apps umożliwia uwidocznienie aplikacji kontenera w publicznej sieci Web przez włączenie ruchu przychodzącego.

Aby skonfigurować ciągłą integrację i ciągłe dostarczanie (CI/CD), autoryzujesz usługę Azure Container Apps jako aplikację OAuth dla konta usługi GitHub. Jako aplikacja OAuth usługa Container Apps zapisuje plik przepływu pracy funkcji GitHub Actions w repozytorium z informacjami o zasobach i zadaniach platformy Azure w celu ich zaktualizowania. Przepływ pracy aktualizuje zasoby platformy Azure przy użyciu poświadczeń jednostki usługi Microsoft Entra (lub istniejącej) z dostępem opartym na rolach dla usługi Container Apps oraz nazwą użytkownika i hasłem usługi Azure Container Registry. Poświadczenia są bezpiecznie przechowywane w repozytorium GitHub.

Na koniec przykładowa aplikacja internetowa z samouczka przechowuje dane w bazie danych PostgreSQL. Przykładowy kod łączy się z bazą danych PostgreSQL za pośrednictwem parametry połączenia. Podczas konfigurowania aplikacji kontenera samouczek przeprowadzi Cię przez proces konfigurowania zmiennych środowiskowych zawierających informacje o połączeniu. Możesz również użyć Połączenie or usługi platformy Azure, aby wykonać to samo.

Wymagania wstępne

Do ukończenia tego samouczka potrzebne są następujące elementy:

Przykładowa aplikacja

Przykładowa aplikacja w języku Python to aplikacja do przeglądu restauracji, która zapisuje dane restauracji i przegląda dane w usłudze PostgreSQL. Na końcu samouczka będziesz mieć wdrożoną i uruchomioną aplikację do przeglądu restauracji w usłudze Azure Container Apps, która wygląda jak na poniższym zrzucie ekranu.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

Następny krok