Mi configuración se basa en una aplicación Flask que tiene una base de datos PostgreSQL y Redis. Además, se inicia un proceso de trabajo para manejar tareas asincrónicas como el envío de correos electrónicos. Yo uso Gunicorn para crear múltiples procesos de aplicación. La transferencia de trabajos desde los procesos de la aplicación al proceso de trabajo se realiza a través de Redis.
La pregunta es, ¿debería iniciarse el proceso de trabajo en un contenedor separado a pesar de estar basado en el mismo código? Actualmente uso un script de inicio con el bit relevante:
gunicorn --bind=0.0.0.0:8000 --workers=3 manage:app &
python -u manage.py run_worker
Además, si se van a separar, ¿cómo puedo asegurarme de que reutilicen el contenedor del sistema de archivos común? Además, al escalar Gunicorn con la aplicación principal o los procesos de trabajo, ¿deberían crearse instancias adicionales del contenedor o aumentarse el número de procesos dentro de un contenedor?
Relacionado: ¿Cuáles son las ventajas de dockerizar nginx y php en diferentes contenedores?