Información general: Implementación de una aplicación web de Python en Azure Container Apps

En este tutorial se muestra cómo incluir una aplicación web de Python en contenedores e implementarla en Azure Container Apps. Una aplicación web de ejemplo se en contenedores y la imagen de Docker almacenada en Azure Container Registry. Azure Container Apps está configurado para extraer la imagen de Docker de Container Registry y crear un contenedor. La aplicación de ejemplo se conecta a una instancia de Azure Database for PostgreSQL para demostrar la comunicación entre Container Apps y otros recursos de Azure.

Hay varias opciones para compilar e implementar aplicaciones web de Python nativas y en contenedores en la nube en Azure. En este tutorial se describe Azure Container Apps. Las aplicaciones de contenedor son adecuadas para ejecutar contenedores de uso general, especialmente para aplicaciones que abarcan muchos microservicios implementados en contenedores. En este tutorial, creará un contenedor. Para implementar una aplicación web de Python como contenedor en App de Azure Service, consulte Aplicación web de Python en contenedor en App Service.

En este tutorial, aprenderás lo siguiente:

  • Cree una imagen de Docker a partir de una aplicación web de Python y almacene la imagen en Azure Container Registry.
  • Configure Azure Container Apps para hospedar la imagen de Docker.
  • Configure una acción de GitHub que actualice el contenedor con una nueva imagen de Docker desencadenada por cambios en el repositorio de GitHub. Este último paso es opcional.

Después de este tutorial, se configurará para la integración continua (CI) y la implementación continua (CD) de una aplicación web de Python en Azure.

Introducción al servicio

El diagrama de servicio que admite este tutorial muestra cómo se usan en el tutorial el entorno local, los repositorios de GitHub y los servicios de Azure.

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

Los componentes que admiten este tutorial y se muestran en el diagrama anterior son:

  • Azure Container Apps

    • Azure Container Apps permite ejecutar microservicios y aplicaciones contenedorizadas en una plataforma sin servidor. Una plataforma sin servidor significa que disfruta de las ventajas de ejecutar contenedores con una configuración mínima. Con Azure Container Apps, las aplicaciones se pueden escalar dinámicamente en función de características como el tráfico HTTP, el procesamiento controlado por eventos o la carga de cpu o memoria.
    • Container Apps extrae imágenes de Docker de Azure Container Registry. Los cambios en las imágenes de contenedor desencadenan una actualización en el contenedor implementado. También puede configurar Acciones de GitHub para desencadenar actualizaciones.
  • Azure Container Registry

    • Azure Container Registry permite trabajar con imágenes de Docker en Azure. Dado que Container Registry está cerca de las implementaciones de Azure, tiene control sobre el acceso, lo que permite usar los grupos y permisos de Microsoft Entra para controlar el acceso a las imágenes de Docker.
    • En este tutorial, el origen del registro es Azure Container Registry, pero también puede usar Docker Hub o un registro privado con modificaciones menores.
  • Azure Database para PostgreSQL

    • El código de ejemplo almacena los datos de la aplicación en una base de datos postgreSQL.
    • La aplicación contenedora se conecta a PostgreSQL a través de variables de entorno configuradas explícitamente o con Azure Service Conectar or.
  • GitHub

    • El código de ejemplo de este tutorial se encuentra en un repositorio de GitHub que bifurcará y clonará localmente. Para configurar un flujo de trabajo de CI/CD con Acciones de GitHub, necesitará una cuenta de GitHub.
    • Todavía puede seguir este tutorial sin una cuenta de GitHub, trabajando localmente o en Azure Cloud Shell para compilar la imagen de contenedor desde el repositorio de código de ejemplo.

Revisiones y CI/CD

Para realizar cambios en el código e insertarlos en un contenedor, cree una nueva imagen de Docker con el cambio. A continuación, inserte la imagen en Container Registry y cree una nueva revisión de la aplicación contenedora.

Para automatizar este proceso, en un paso opcional del tutorial se muestra cómo crear una canalización de integración continua y entrega continua (CI/CD) con Acciones de GitHub. La canalización compila e implementa automáticamente el código en la aplicación contenedora cada vez que se inserta una nueva confirmación en el repositorio de GitHub.

Autenticación y seguridad

En este tutorial, creará una imagen de contenedor de Docker directamente en Azure e la implementará en Azure Container Apps. Las aplicaciones de contenedor se ejecutan en el contexto de un entorno, que es compatible con una red virtual (VNet) de Azure. Las redes virtuales son un bloque de creación fundamental para la red privada en Azure. Container Apps permite exponer la aplicación contenedora a la web pública habilitando la entrada.

Para configurar la integración continua y la entrega continua (CI/CD), autorizará Azure Container Apps como una aplicación de OAuth para su cuenta de GitHub. Como aplicación de OAuth, Container Apps escribe un archivo de flujo de trabajo de Acciones de GitHub en el repositorio con información sobre los recursos y trabajos de Azure para actualizarlos. El flujo de trabajo actualiza los recursos de Azure mediante credenciales de una entidad de servicio de Microsoft Entra (o existente) con acceso basado en roles para Container Apps y nombre de usuario y contraseña para Azure Container Registry. Las credenciales se almacenan de forma segura en el repositorio de GitHub.

Por último, la aplicación web de ejemplo del tutorial almacena datos en una base de datos postgreSQL. El código de ejemplo se conecta a PostgreSQL a través de un cadena de conexión. Durante la configuración de la aplicación contenedora, el tutorial le guía a través de la configuración de variables de entorno que contienen información de conexión. También puede usar un Conectar or de servicio de Azure para lograr lo mismo.

Requisitos previos

Para completar este tutorial, necesita:

Aplicación de ejemplo

La aplicación de ejemplo de Python es una aplicación de revisión de restaurantes que guarda el restaurante y revisa los datos en PostgreSQL. Al final del tutorial, tendrá una aplicación de revisión de restaurante implementada y en ejecución en Azure Container Apps que tiene un aspecto similar a la captura de pantalla siguiente.

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

Paso siguiente