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

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

Patricia Arquette
發布: 2024-12-05 04:03:10
原創
771 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板