Información general: Aplicación web de Python en contenedor en Azure con MongoDB
En este tutorial se muestra cómo incluir en contenedores una aplicación web de Python e implementarla en Azure. La aplicación web de contenedor único se hospeda en App de Azure Service y usa MongoDB para Azure Cosmos DB para almacenar datos. App Service Web App for Containers le permite centrarse en la redacción de los contenedores sin preocuparse de administrar y mantener un orquestador de contenedores subyacente. Al compilar aplicaciones web, App de Azure Service es una buena opción para realizar los primeros pasos con los contenedores. Para más información sobre el uso de contenedores en Azure, consulte Comparación de las opciones de contenedor de Azure.
En este tutorial, aprenderá lo siguiente:
Compile y ejecute un contenedor de Docker localmente. Este paso es opcional.
Compile una imagen de contenedor de Docker directamente en Azure.
Configure una instancia de App Service para crear una aplicación web basada en la imagen de contenedor de Docker.
Después de este tutorial, tendrá la base para la integración continua (CI) y la implementación continua (CD) de una aplicación web de Python en Azure.
Información general sobre el servicio
El diagrama de servicio que admite este tutorial muestra dos entornos (entorno de desarrollador y Azure) y los distintos servicios de Azure que se usan en el tutorial.
Los componentes que admiten este tutorial y se muestran en el diagrama anterior son:
-
La funcionalidad subyacente de App Service que habilita la contenedorización es Web App for Containers. App de Azure Service usa el Tecnología de contenedor de Docker para hospedar imágenes integradas e imágenes personalizadas. En este tutorial, creará una imagen a partir del código de Python e la implementará en Web App for Containers.
Web App for Containers usa un webhook en el registro para recibir notificaciones de nuevas imágenes. Una inserción de una nueva imagen en el repositorio desencadena App Service para extraer la imagen y reiniciarla.
-
Azure Container Registry permite trabajar con imágenes de Docker y sus componentes en Azure. Proporciona un registro que está cerca de las implementaciones en Azure y que proporciona control sobre el acceso, lo que permite usar los permisos y grupos de Microsoft Entra.
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 Cosmos DB para MongoDB es una base de datos NoSQL que se usa en este tutorial para almacenar datos.
El acceso al recurso de Azure Cosmos DB se realiza a través de una cadena de conexión, que se pasa como una variable de entorno a la aplicación en contenedor.
Autenticación
En este tutorial, creará una imagen de Docker (local o directamente en Azure) e la implementará en App de Azure Service. App Service extrae la imagen de contenedor de un repositorio de Azure Container Registry.
App Service usa la identidad administrada para extraer imágenes de Azure Container Registry. La identidad administrada permite conceder permisos a la aplicación web para que pueda acceder a otros recursos de Azure sin necesidad de especificar credenciales. En concreto, en este tutorial se usa una identidad administrada asignada por el sistema. La identidad administrada se configura durante la instalación de App Service para usar una imagen de contenedor del registro.
La aplicación web de ejemplo del tutorial usa MongoDB para almacenar datos. El código de ejemplo se conecta a Azure Cosmos DB a través de un cadena de conexión.
Requisitos previos
Para completar este tutorial, necesita:
Una cuenta de Azure donde puede crear:
- Azure Container Registry
- Azure App Service
- Azure Cosmos DB para MongoDB (o acceso a un equivalente). Para crear una base de datos de Azure Cosmos DB para MongoDB, se recomienda seguir los pasos descritos en la parte 2 de este tutorial.
Visual Studio Code o la CLI de Azure, en función de la herramienta que usará.
- Para Visual Studio Code, necesitará la extensión de Docker y la extensión App de Azure Service.
Paquetes de Python:
Docker se instala localmente si desea ejecutar el contenedor localmente.
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 MongoDB. Para ver un ejemplo de una aplicación web mediante PostgreSQL, consulte Creación e implementación de una aplicación web de Flask en Azure con una identidad administrada.
Al final del tutorial, tendrá una aplicación de revisión de restaurante implementada y en ejecución en Azure que tiene un aspecto similar a la captura de pantalla siguiente.