Maison >développement back-end >Tutoriel Python >Pourquoi mon application Python n'imprime-t-elle rien lorsqu'elle est exécutée dans un conteneur Docker détaché ?

Pourquoi mon application Python n'imprime-t-elle rien lorsqu'elle est exécutée dans un conteneur Docker détaché ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 04:03:10732parcourir

Why Doesn't My Python App Print Anything When Run in a Detached Docker Container?

Pourquoi l'application Python n'imprime rien dans le conteneur Docker détaché

Lors de l'exécution d'une application Python dans un conteneur Docker en mode détaché (indicateur -d), vous pouvez rencontrer un problème où la sortie de l'application n'est pas visible.

Reason

La fonction "print" de Python utilise une sortie mise en mémoire tampon, ce qui signifie que la sortie n'est pas immédiatement transmise au flux stdout. Lors de l'exécution en mode détaché, le processus conteneur se termine une fois que le script principal (main.py) a terminé sa boucle. Étant donné que le tampon stdout n'a pas encore été vidé, la sortie est perdue.

Solution

Pour résoudre le problème, activez la sortie sans tampon à l'aide du - u flag avec la commande Python dans le CMD du Dockerfile instruction :

CMD ["python", "-u", "main.py"]

Avec une sortie sans tampon, la sortie de l'application sera immédiatement écrite sur la sortie standard, la rendant visible lors de l'utilisation des journaux Docker, même en mode détaché :

$ docker run --name=myapp -d myappimage
> b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1

$ docker logs myapp
> App started
> [loop output]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn