Lors de l'exécution d'un programme écrit en Python dans un conteneur Docker, il arrive régulièrement que la sortie standard reste anormalement vide :
$ docker logs my-app
$
La raison est généralement que par défaut, l'interpréteur Python utilise une
mémoire tampon pour les écritures vers stdout. Les écritures sont donc
différées et cela peut prendre un moment avant de voir apparaitre la moindre
ligne d'écriture (selon la verbosité de votre programme).
Une solution est d'utiliser l'option -u lors de l'appel à l'interpréteur
Python. Votre Dockerfile devra contenir une ligne ressemblant à ceci :
CMD ["python3", "-u", "my-app.py"]
Et ainsi :
$ docker logs my-app
It works !
$
