首頁 >後端開發 >Python教學 >為什麼我的 Python 應用程式在分離的 Docker 容器中運行時不列印任何內容?

為什麼我的 Python 應用程式在分離的 Docker 容器中運行時不列印任何內容?

Patricia Arquette
Patricia Arquette原創
2024-12-05 04:03:10732瀏覽

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

為什麼Python 應用程式在分離的Docker 容器中不列印任何內容

以分離模式(-d 標誌)在Docker 容器中執行Python 應用程式時,您可能會遇到問題應用程式的輸出不是可見。

原因

Python 的「print」函數使用緩衝輸出,這表示輸出不會立即刷新到 stdout 流。在分離模式下執行時,容器程序在主腳本 (main.py) 完成循環後退出。由於 stdout 緩衝區尚未刷新,因此輸出遺失。

解決方案

要解決此問題,請使用 - 啟用無緩衝輸出u 標記為 Dockerfile 的 CMD 中的 Python命令指令:

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

使用無緩衝輸出,應用程式的輸出將立即寫入標準輸出,即使在分離模式下使用 docker 日誌時也可見:

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

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

以上是為什麼我的 Python 應用程式在分離的 Docker 容器中運行時不列印任何內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn