cosas que deseaba haber sabido, Python
     

Salida de Docker, Python y Terminal Faltante

Seré el primero en admitir que cometo muchos errores – Me gusta decir que me equivoco más de lo que tengo razón. Presente esto en “cosas que deseaba haber sabido antes“.

Este es el escenario: está dockericando una aplicación de Python que se ejecuta muy bien localmente, y la versión de Docker de la aplicación se niega a hacer nada – parece bloqueado, sin salida de consola. ¿Te suena familiar? Si es así, por suerte la solución es bastante sencilla.

Primero echemos un vistazo a la aplicación problemática. Podría ser tan simple como esto:

No pasa mucho aquí, simplemente imprimir una línea de texto en la consola, y caer en un bucle sin fin. Lo anterior podría hacerse más complicado, tal vez el bucle sin fin está procesando alguna cola de trabajo, o comprobando una fuente del mercado de valores, etc. En nuestro ejemplo, seguiremos con los conceptos básicos y simplemente en bucle.

La ejecución de esta aplicación localmente muestra que funciona muy bien, así que vamos a dockerizarla.

El Dockerfile anterior también es tan simple como las cosas se ponen. Copie la aplicación en una ruta de acceso dentro del entorno de Docker y ejecute python app.py en el inicio: el mismo comando que usaría para ejecutar esta aplicación localmente. ¿Se ve bien? Vamos a encender esto.

Nada. Ni una sola salida.

La solución aquí es realmente utilizar el parámetro “-u” al invocar Python. Este indicador deshabilita el almacenamiento en búfer de salida:

Con esta modificación, el Dockerfile ahora tiene este aspecto:

¡Eso es todo! La ejecución de la aplicación produce resultados, incluso cuando está dentro de Docker, y esperemos que esto le ahorró algún tiempo.

About Jason

Jason es un experimentado emprendedor y desarrollador de software experto en liderazgo, desarrollo móvil, sincronización de datos y arquitectura SaaS. Obtuvo su Licenciatura en Ciencias de la Computación de la Universidad Estatal de Arkansas.
View all posts by Jason →

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *