Ejecutar una aplicación Flask en modo de producción
Cuando se ejecuta una aplicación Flask en un entorno de producción, es importante utilizar un servidor listo para producción en lugar del servidor de desarrollo incorporado. En esta sección, aprenderemos cómo ejecutar una aplicación Flask en modo de producción utilizando Docker.
Elegir un servidor de producción
Hay varios servidores web listos para producción que se pueden utilizar para ejecutar una aplicación Flask, como Gunicorn, uWSGI y Waitress. En este ejemplo, utilizaremos Gunicorn, un popular y ampliamente utilizado servidor web para aplicaciones Python.
Modificar el Dockerfile
Para ejecutar la aplicación Flask en modo de producción utilizando Gunicorn, necesitamos actualizar el Dockerfile. Reemplaza el contenido del Dockerfile con lo siguiente:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt.
RUN pip install --no-cache-dir -r requirements.txt
COPY..
RUN pip install gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
Los cambios principales son:
- Agregamos
RUN pip install gunicorn para instalar el servidor web Gunicorn.
- Cambiamos la instrucción
CMD para utilizar Gunicorn para iniciar la aplicación Flask. El comando "gunicorn", "--bind", "0.0.0.0:5000", "app:app" le dice a Gunicorn que enlace la aplicación a la dirección 0.0.0.0:5000 y que utilice el objeto app del archivo app.py como la aplicación WSGI.
Construir y ejecutar el contenedor Docker listo para producción
Ahora, construyamos la imagen Docker y ejecutemos el contenedor en modo de producción:
- Construye la imagen Docker:
docker build -t labex-flask-app-prod.
- Ejecuta el contenedor Docker:
docker run -p 5000:5000 labex-flask-app-prod
La aplicación ahora debería estar ejecutándose en modo de producción utilizando Gunicorn.
Verificar la configuración de producción
Para verificar que la aplicación Flask se está ejecutando en modo de producción, puedes utilizar el siguiente comando para ver los registros:
docker logs <container_id>
Deberías ver una salida similar a la siguiente:
[2023-04-11 12:34:56 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2023-04-11 12:34:56 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-04-11 12:34:56 +0000] [1] [INFO] Using worker: sync
[2023-04-11 12:34:56 +0000] [8] [INFO] Booting worker with pid: 8
Esto confirma que la aplicación Flask se está ejecutando en modo de producción utilizando el servidor web Gunicorn.