Overview
Este tutorial muestra cómo contenerizar una aplicación Flask que usa MongoDB Atlas e implementarla en Azure Container Apps. Azure Container Apps es una plataforma sin servidor que simplifica la implementación y la administración de aplicaciones en contenedores sin necesidad de administrar la infraestructura.
Tutorial
Este tutorial le muestra cómo completar las siguientes tareas:
Verificar los prerrequisitos
Configurar la aplicación Flask
Crear un Dockerfile
Crear un registro de contenedores de Azure
Construir y enviar la imagen de Docker
Crear e implementar la aplicación de contenedor de Azure
Verificar los prerrequisitos
Antes de comenzar, completa los siguientes requisitos previos:
Cree una aplicación Flask y MongoDB desde el Repositorio de GitHub
Instalar Docker Desktop
Instalar Microsoft Azure
Instalar Python 3.9 o posterior
Instalar Postman Desktop u otra herramienta de prueba de API
Este tutorial también requiere una cuenta de MongoDB Atlas con un clúster activo y una suscripción a Microsoft Azure.
Configurar la aplicación Flask
Clone el repositorio de la aplicación Flask ejecutando el siguiente comando:
git clone https://github.com/mongodb-developer/atlas-flask-azure-demo
Usando la interfaz de usuario de Atlas, cree un books Colección en una base de datos llamada bookshelf. Cree algunos documentos en la colección, utilizando los siguientes documentos de ejemplo como guía:
{ "book": "The Great Gatsby", "pages": 180, }, { "book": "Slaughterhouse-Five", "pages": 215, }, { "book": "If Beale Street Could Talk", "pages": 197, }
Para iniciar la aplicación, navegue a su directorio de trabajo y ejecute el siguiente comando:
flask run
Utilice su navegador o herramienta de prueba de API para acceder al punto final /books para recuperar los documentos que creó.
Crear un Dockerfile
Un Dockerfile contiene comandos para crear una imagen de Docker. Cree un archivo llamado Dockerfile en su directorio de trabajo y agréguele el siguiente contenido:
FROM python:3.9-slim-buster WORKDIR /azurecontainerappsdemo COPY ./config/requirements.txt /azurecontainerappsdemo/ RUN pip install -r requirements.txt COPY . /azurecontainerappsdemo/ ENV FLASK_APP=app.py EXPOSE 5000 CMD ["flask", "run", "--host=0.0.0.0"]
Mueva su archivo requirements.txt a una nueva carpeta llamada config para garantizar que Docker pueda localizarlo y copiarlo durante el proceso de compilación.
Este Dockerfile realiza las siguientes tareas:
Utiliza
python:3.9-slim-bustercomo imagen baseEstablece el directorio de trabajo
Copia e instala dependencias de Python
Copia archivos de aplicaciones
Expone el puerto 5000
Configura Flask para aceptar conexiones desde cualquier interfaz de red
Agregue el siguiente código al final de su archivo app.py para garantizar que Flask se ejecute en todas las interfaces de red:
if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
Puede verificar que su imagen de Docker funcione localmente antes de implementarla en Azure. Cree la imagen ejecutando el siguiente comando:
docker build --tag azurecontainerappsdemo .
Luego, ejecute el contenedor con su cadena de conexión MongoDB ejecutando el siguiente comando:
docker run -d -p 5000:5000 -e "CONNECTION_STRING=<MONGODB_ATLAS_URI_STRING_HERE>" azurecontainerappsdemo
Una vez que el contenedor esté en funcionamiento, accede a la aplicación en http://localhost:5000 desde tu navegador.
Crear un registro de contenedores de Azure
Inicie sesión en el portal de Azure y navegue hasta el servicio Container Registry. Haga clic en Create y especifique las siguientes configuraciones para su registro:
Grupo de recursos: el nombre de su grupo de recursos
Nombre de registro: sirve como su URL de inicio de sesión
Ubicación: La ubicación de su registro
Nota
Debe utilizar los mismos valores de grupo de recursos y ubicación al crear su aplicación contenedora.
Haga clic en Review and Create.
Una vez completada la implementación, abra Visual Studio Code. Asegúrese de instalar la extensión de Docker.
Navega a Registries, inicia sesión en tu cuenta de Azure y conecta tu repositorio.
Inicie sesión en su Azure Container Registry ejecutando el siguiente comando:
docker login <azure registry url>
Tip
Puede encontrar su nombre de usuario y contraseña en la sección Access Keys de su Registro de Contenedores. Habilite Admin Access para ver las credenciales.
Importante
Si usa Windows, haga clic derecho para pegar las credenciales en la terminal para evitar errores.
Construir y enviar la imagen de Docker
Siga estos pasos para crear su imagen de Docker y enviarla a Azure Container Registry. Seleccione la pestaña correspondiente a su sistema operativo y arquitectura:
Instale Buildx ejecutando el siguiente comando:
docker buildx install
Habilite Buildx ejecutando el siguiente comando:
docker buildx create --use
Cree la imagen para la plataforma linux/amd64 ejecutando el siguiente comando:
docker buildx build --platform linux/amd64 --t <azure registry url>/<image name>:<image tag> --output type=docker .
Inserte la imagen en su Azure Container Registry ejecutando el siguiente comando:
docker push <azure registry url>/<image name>:<image tag>
Construya la imagen ejecutando el siguiente comando:
docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .
Empuje la imagen ejecutando el siguiente comando:
docker push <azure registry url>/<image name>:<image tag>
Construya la imagen ejecutando el siguiente comando:
docker build --t <azure registry url>/<image name>:<image tag> .
Empuje la imagen ejecutando el siguiente comando:
docker push <image name>:<image tag>
Para verificar que la inserción se realizó correctamente, navegue hasta Container Registry en el portal de Azure y haga clic en Repositories para ver su imagen.
Crear e implementar la aplicación de contenedor de Azure
Vaya al servicio Container Apps en el portal de Azure y haga clic en Create.
En la sección Basics, configure los siguientes ajustes para su aplicación contenedora:
Suscripción: Su suscripción de Azure
Grupo de recursos: el mismo grupo de recursos que utilizó para su Registro de contenedores
Nombre de la aplicación del contenedor
Región: La misma región que utilizó para su Registro de contenedores
Importante
Si esta es su primera aplicación de contenedor, cree un entorno al crear la aplicación. Un entorno de aplicación de contenedor crea un límite seguro para las aplicaciones de contenedor en la misma red virtual.
Configure los siguientes ajustes en la sección App Settings:
Desmarcar Use quickstart image
Seleccione Azure Container Registry como fuente de la imagen
Ingrese su información de registro, imagen y etiqueta
Agregue su cadena de conexión MongoDB Atlas como una variable de entorno CONNECTION_STRING llamada.
Habilite el ingreso y configure los siguientes ajustes de ingreso:
Tráfico de entrada: Aceptar tráfico desde cualquier parte
Tipo de entrada: HTTP
Transporte: Auto
Conexiones inseguras: Permitidas
Puerto de destino: 5000
Haga clic en Review and Create. Una vez completada la implementación, haga clic en Go to Resource y, a continuación, en Application URL para acceder a la aplicación implementada.
Agregue /books a la URL para ver los libros que agregó anteriormente desde su base de datos MongoDB Atlas.
Recursos adicionales
Para ver el código completo de este tutorial, consulte el repositorio azurecontainerappdemo en GitHub.
Para obtener más información sobre Azure Container Apps, consulte la documentación de Azure Container Apps en el sitio web de Microsoft.