Overview
Este tutorial muestra cómo contenerizar una aplicación Flask que utiliza 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 contenerizadas sin necesidad de administrar la infraestructura.
Tutorial
Este tutorial le muestra cómo realizar las siguientes tareas:
Verificar los prerrequisitos
Configura la aplicación Flask
Crear un Dockerfile
Crear un Registro de Contenedor de Azure
Compila y envía la imagen Docker
Crear e implementar la aplicación de contenedor de Azure
Verificar los prerrequisitos
Antes de comenzar, completa los siguientes requisitos previos:
Crear una aplicación Flask y MongoDB a partir de Repositorio de GitHub
Instale Docker Desktop
Install Microsoft Azure
Instala Python 3.9 o posterior
Instala 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.
Configura la aplicación Flask
Clona el repositorio de la aplicación Flask ejecutando el siguiente comando:
git clone https://github.com/mongodb-developer/atlas-flask-azure-demo
Utilizando la interfaz de usuario de Atlas, crea un books colección en una base de datos llamada bookshelf. Crea algunos documentos en la colección, utilizando los siguientes documentos de muestra 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, navega a tu directorio de trabajo y ejecuta 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 compilar una imagen de Docker. Cree un archivo llamado Dockerfile en el directorio de trabajo y, a continuación, añada 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"]
Mueve tu archivo requirements.txt a una nueva carpeta llamada config para asegurarte de que Docker pueda localizarlo y copiarlo durante el proceso de compilación.
Este Dockerfile realiza las siguientes tareas:
Utiliza
python:3.9-slim-bustercomo la 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 de cualquier interfaz de red
Agrega el siguiente código al final de tu 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 de 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 Contenedor de Azure
Inicia sesión en el portal de Azure y navega hasta el servicio de Registro de contenedores. Haz clic Create y especificar las siguientes configuraciones para tu registro:
Grupo de recursos: El nombre de tu grupo de recursos
Nombre de registro: sirve como su URL de inicio de sesión
Ubicación: La ubicación de tu registro
Nota
Debe usar los mismos valores de Grupo de recursos y Ubicación cuando cree su Aplicación de contenedor.
Haga clic en Review and Create.
Una vez que se complete la implementación, abre Visual Studio Code. Asegúrate de instalar la extensión Docker.
Navega a Registries, inicia sesión en tu cuenta de Azure y conecta tu repositorio.
Inicie sesión en su Registro de contenedores de Azure ejecutando el siguiente comando:
docker login <azure registry url>
Tip
Puedes encontrar tu nombre de usuario y contraseña en la sección Access Keys de tu Container Registry. Habilita Admin Access para ver las credenciales.
Importante
Si utiliza Windows, haga clic con el botón derecho para pegar credenciales en el terminal y así evitar errores.
Compila y envía la imagen 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:
Instala Buildx ejecutando el siguiente comando:
docker buildx install
Habilite Buildx ejecutando el siguiente comando:
docker buildx create --use
Compila 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 .
Suba la imagen a su Registro de contenedor de Azure ejecutando el siguiente comando:
docker push <azure registry url>/<image name>:<image tag>
Compila la imagen ejecutando el siguiente comando:
docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .
Empuja la imagen ejecutando el siguiente comando:
docker push <azure registry url>/<image name>:<image tag>
Compila la imagen ejecutando el siguiente comando:
docker build --t <azure registry url>/<image name>:<image tag> .
Empuja la imagen ejecutando el siguiente comando:
docker push <image name>:<image tag>
Para comprobar que el push se realizó correctamente, navega al Registro de contenedores en el portal de Azure y haz clic en Repositories para ver tu imagen.
Crear e implementar la aplicación de contenedor de Azure
Navegue al servicio Container Apps en el portal de Azure y haga clic en Create.
En la sección Basics, configura los siguientes ajustes para tu aplicación de contenedores:
Suscripción: Su suscripción de Azure
Grupo de recursos: El mismo grupo de recursos que utilizaste para tu Registro de contenedores.
Nombre de la aplicación de contenedor
Región: la misma región que usaste para tu Registro de contenedores
Importante
Si esta es tu primera aplicación de contenedores, crea un entorno cuando crees la aplicación. Un entorno de Aplicación de contenedor crea un perímetro seguro para las aplicaciones de contenedor en la misma red virtual.
Configura la siguiente configuración en la sección App Settings:
Desmarcar Use quickstart image
Selecciona Azure Container Registry como fuente de la imagen
Introduce la información de tu registro, imagen y etiqueta
Añada su MongoDB Atlas cadena de conexión con el nombre CONNECTION_STRING como una variable de entorno.
Habilite el ingreso y configure la siguiente configuración de ingreso:
Tráfico de entrada: Aceptar tráfico desde cualquier parte
Tipo de ingreso: HTTP
Transporte: coche
Conexiones inseguras: Permitidas
Puerto de destino: 5000
Haz clic en Review and Create. Después de que se complete la implementación, haz clic en Go to Resource, luego haz clic en Application URL para acceder a tu aplicación implementada.
Agrega /books a la URL para ver los libros que agregaste previamente desde tu base de datos MongoDB Atlas.
Recursos adicionales
Para ver el código completo de este tutorial, consulta el azurecontainerappdemo repositorio 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.