Hintergrund
Bei der Ausführung von Python-Skripten in Docker-Containern Das Ausgabeverhalten kann unterschiedlich sein, je nachdem, ob der Container interaktiv oder getrennt ausgeführt wird Modus.
Problem
Im getrennten Modus (Flag -d) drucken Python-Skripte möglicherweise keine Ausgabe, obwohl der Container scheinbar normal läuft. Dieses Problem betrifft Python-Apps (Version 2.7), die mit CMD [„python“, „main.py“] in ihrer Docker-Datei gestartet wurden.
Ursache
Das Problem liegt an Das standardmäßige gepufferte Ausgabeverhalten von Python. Bei getrennter Ausführung werden die Ausgabepuffer des Containers nicht automatisch geleert, sodass sie sich ansammeln, bis ein bestimmter Schwellenwert erreicht ist. Dies führt dazu, dass während der Trennung keine sichtbare Ausgabe erfolgt.
Lösung
Um dieses Problem zu beheben, verwenden Sie ungepufferte Ausgabe (-u-Flag):
CMD ["python", "-u", "main.py"]
Dies erzwingt, dass stdout und stderr ungepuffert sind, sodass die Ausgabe sofort getrennt angezeigt werden kann Container.
Erklärung
Durch die Aktivierung der ungepufferten Ausgabe wird der Container Die Ausgabe kann während der getrennten Ausführung in Echtzeit angezeigt werden.
Das obige ist der detaillierte Inhalt vonWarum zeigen meine Docker-Python-Apps keine Ausgabe, wenn sie getrennt ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!