Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo containerizar una aplicación web de Python con Flask o FastAPI y desplegarla en Azure Container Apps. Azure Container Apps usa Docker tecnología de contenedor para hospedar imágenes integradas e imágenes personalizadas. Para obtener más información sobre el uso de contenedores en Azure, consulte Comparación de opciones de contenedor de Azure.
En este tutorial, usará la CLI de Docker y el CLI de Azure para crear una imagen de Docker e implementarla en Azure Container Apps. También puede implementar mediante Visual Studio Code y la extensión Azure Tools.
Prerrequisitos
Para completar este tutorial, necesita lo siguiente:
Una cuenta de Azure donde puede implementar una aplicación web en Azure Container Apps. (El proceso crea un Azure Container Registry y un área de trabajo de Log Analytics para usted.)
CLI de Azure, Docker y la CLI de Docker instalado en el entorno local.
Obtención del código de ejemplo
En tu entorno local, obtén el código.
- Flask
- FastAPI
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git
Adición de archivos Dockerfile y .dockerignore
Agregue un Dockerfile para indicar a Docker cómo compilar la imagen. El Dockerfile especifica el uso de Gunicorn, un servidor web de nivel de producción que reenvía las solicitudes web a los marcos Flask y FastAPI. Los comandos ENTRYPOINT y CMD indican a Gunicorn que controle las solicitudes del objeto de aplicación.
- Flask
- FastAPI
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]
En este ejemplo se usa para el puerto de contenedor (interno), pero puede usar cualquier puerto libre.
Compruebe el archivo requirements.txt para asegurarse de que contiene .
Flask==3.1.0
gunicorn
Configuración de gunicorn
Puede configurar Gunicorn mediante un archivo gunicorn.conf.py . Cuando el archivo gunicorn.conf.py se encuentra en el mismo directorio en el que se ejecuta , no es necesario especificar su ubicación en la instrucción ni del Dockerfile. Para obtener más información sobre cómo especificar el archivo de configuración, consulte Configuración de Gunicorn.
En este tutorial, el archivo de configuración sugerido configura Gunicorn para aumentar su número de trabajos en función del número de núcleos de CPU disponibles. Para obtener más información sobre la configuración de archivos gunicorn.conf.py, consulte Configuración de Gunicorn.
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Agregue un archivo .dockerignore para excluir archivos innecesarios de la imagen.
.git*
**/*.pyc
.venv/
Compilación y ejecución local de la imagen
Compile la imagen localmente.
- Flask
- FastAPI
docker build --tag flask-demo .
Ejecute la imagen localmente en un contenedor de Docker.
- Flask
- FastAPI
docker run --detach --publish 5000:50505 flask-demo
Abra en el explorador para ver la aplicación web que se ejecuta localmente.
La opción ejecuta el contenedor en segundo plano. La opción asigna el puerto de contenedor a un puerto en el host. El puerto host (externo) es primero en el par y el puerto de contenedor (interno) es el segundo. Para más información, consulte Referencia de ejecución de Docker.
Implementación de una aplicación web en Azure
Para implementar la imagen de Docker en Azure Container Apps, use el comando az containerapp up. (Se muestran los siguientes comandos para el shell de Bash. Cambie el carácter de continuación () según sea necesario para otros shells.
- Flask
- FastAPI
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Cuando finalice la implementación, tendrá un grupo de recursos con los siguientes recursos dentro de ella:
- Un registro de contenedores de Azure
- Un entorno de Container Apps
- Una Container App que ejecuta la imagen de la aplicación web
- Un área de trabajo de Log Analytics
La salida del comando incluye la dirección URL de la aplicación implementada. Abra la dirección URL en el explorador para ver la aplicación web que se ejecuta en Azure. La dirección URL es similar a la siguiente, donde los elementos
Actualizaciones y nuevas implementaciones
Después de realizar actualizaciones de código, vuelva a ejecutar el comando anterior . El comando vuelve a generar la imagen y la vuelve a implementar en Azure Container Apps. Al volver a ejecutar el comando, detecta que el grupo de recursos y la aplicación ya existen y actualiza solo la aplicación contenedora.
En escenarios de actualización más complejos, puede volver a implementar mediante los comandos az acr build y az containerapp update juntos para actualizar la aplicación contenedora.
Limpieza
Todos los recursos Azure que creó en este tutorial se encuentran en el mismo grupo de recursos. Si se elimina el grupo de recursos, se eliminan todos los recursos del grupo de recursos. Es la forma más rápida de quitar todos los recursos de Azure usados para la aplicación.
Para quitar recursos, use el comando az group delete.
- Flask
- FastAPI
az group delete --name web-flask-aca-rg
También puede quitar el grupo en el portal Azure o en Visual Studio Code mediante la extensión Azure Tools.
Pasos siguientes
Para obtener más información, consulte los siguientes recursos: