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é ?
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.
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.
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!